日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術文章
文章詳情頁

Android基于OpenCV實現圖像金字塔

瀏覽:276日期:2022-09-18 08:04:28
目錄圖像金字塔高斯金字塔拉普拉斯金字塔API下采樣上采樣操作操作效果源碼圖像金字塔

圖像金字塔是圖像中多尺度表達的一種,最主要用于圖像的分割,是一種以多分辨率來解釋圖像的有效但概念簡單的結構。

圖像金字塔最初用于機器視覺和圖像壓縮,一幅圖像的金字塔是一系列以金字塔形狀排列的分辨率逐步降低,且來源于同一張原始圖的圖像集合。其通過梯次向下采樣獲得,直到達到某個終止條件才停止采樣。

金字塔的底部是待處理圖像的高分辨率表示,而頂部是低分辨率的近似。

我們將一層一層的圖像比喻成金字塔,層級越高,則圖像越小,分辨率越低。

高斯金字塔

高斯金字塔的底層為原始圖像,每向上一層則是通過高斯濾波和1/2采樣得到(去掉偶數行和列)。通過下采樣不斷的將圖像的尺寸縮小,進而在金字塔中包含多個尺度的圖像,一般情況下,高斯金字塔的最底層為圖像的原圖,每上一層就會通過下采樣縮小一次圖像的尺寸,通常情況尺寸會縮小為原來的一半,但是如果有特殊需求,縮小的尺寸也可以根據實際情況進行調整。由于每次圖像的尺寸都縮小為原來的一半,圖像尺縮小的速度非常快,因此常見高斯金字塔的層數為3到6層。

高斯濾波器可以看做一個低通濾波器,那么每經過一次的高斯濾波,圖像中僅能夠保留某個頻率值以下的頻率部分,所以高斯金字塔也可以看做一個低通金字塔(每一級只保留某個頻率以下的成分)。

Android基于OpenCV實現圖像金字塔

拉普拉斯金字塔

拉普拉斯金字塔與高斯金字塔正好相反,高斯金字塔通過底層圖像構建上層圖像,而拉普拉斯是通過上層小尺寸的圖像構建下層大尺寸的圖像。拉普拉斯金字塔具有預測殘差的作用,需要與高斯金字塔聯合一起使用,假設我們已經有一個高斯圖像金字塔,對于其中的第i層圖像(高斯金字塔最下面為第0層),首先通過下采樣得到一尺寸縮小一半的圖像,即高斯金字塔中的第i+1層或者不在高斯金字塔中,之后對這張圖像再進行上采樣,將圖像尺寸恢復到第i層圖像的大小,最后求取高斯金字塔第i層圖像與經過上采樣后得到的圖像的差值圖像,這個差值圖像就是拉普拉斯金字塔的第i層圖像。

Android基于OpenCV實現圖像金字塔

API下采樣

public static void pyrDown(Mat src, Mat dst, Size dstsize, int borderType) 參數一:src,輸入待下采樣的圖像。 參數二:dst,輸出下采樣后的圖像,圖像尺寸可以指定,但是數據類型和通道數與src相同, 參數三:dstsize,輸出圖像尺寸,可以缺省。 參數四:borderType,像素邊界外推方法的標志

// C++: enum BorderTypespublic static final intBORDER_CONSTANT = 0,BORDER_REPLICATE = 1,BORDER_REFLECT = 2,BORDER_WRAP = 3,BORDER_REFLECT_101 = 4,BORDER_TRANSPARENT = 5,BORDER_REFLECT101 = BORDER_REFLECT_101,BORDER_DEFAULT = BORDER_REFLECT_101,BORDER_ISOLATED = 16;

默認狀態下函數輸出的圖像的尺寸為輸入圖像尺寸的一半,但是也可以通過dstsize參數來設置輸出圖像的大小,需要注意的是無論輸出尺寸為多少都應滿足下面式中條件。該函數首先將原圖像與內核矩陣進行卷積,內核矩陣如下所示,之后通過不使用偶數行和列的方式對圖像進行下采樣,最終實現尺寸縮小的下采樣圖像。

Android基于OpenCV實現圖像金字塔

Android基于OpenCV實現圖像金字塔

上采樣

public static void pyrUp(Mat src, Mat dst, Size dstsize, int borderType) 參數一:src,輸入待上采樣的圖像。 參數二:dst,輸出上采樣后的圖像,圖像尺寸可以指定,但是數據類型和通道數與src相同, 參數三:dstsize,輸出圖像尺寸,可以缺省。 參數四:borderType,像素邊界外推方法的標志 操作

class GLPyramidActivity : CardGalleryActivity() { override fun buildCards() {val bgr = Utils.loadResource(this, R.drawable.lena)val rgb = Mat()Imgproc.cvtColor(bgr, rgb, Imgproc.COLOR_BGR2RGB)bgr.release()buildGauss(rgb)rgb.release() } private fun buildGauss(source: Mat) {val gaussList = arrayListOf<Mat>()gaussList.add(source)for (i in 0..2) { val gauss = Mat() Imgproc.pyrDown(gaussList[i], gauss) gaussList.add(gauss)}for (i in gaussList.indices) { val bitmap = Bitmap.createBitmap(gaussList[i].width(),gaussList[i].height(),Bitmap.Config.ARGB_8888 ) Utils.matToBitmap(gaussList[i], bitmap) cards.add(Card('Gauss${i}', bitmap))}buildLaplace(gaussList) } private fun buildLaplace(gaussList: List<Mat>) {val laplaceList = arrayListOf<Mat>()for (i in gaussList.size - 1 downTo 1) { val lap = Mat() val upGauss = Mat() if (i == gaussList.size - 1) {val down = Mat()Imgproc.pyrDown(gaussList[i], down)Imgproc.pyrUp(down, upGauss)Core.subtract(gaussList[i], upGauss, lap)laplaceList.add(lap.clone()) } Imgproc.pyrUp(gaussList[i], upGauss) Core.subtract(gaussList[i - 1], upGauss, lap) laplaceList.add(lap.clone())}for (i in laplaceList.indices) { val bitmap = Bitmap.createBitmap(laplaceList[i].width(),laplaceList[i].height(),Bitmap.Config.ARGB_8888 ) Utils.matToBitmap(laplaceList[i], bitmap) cards.add(Card('Laplace${i}', bitmap))}for (gauss in gaussList) { gauss.release()}for (lap in laplaceList) { lap.release()} }}操作

class GLPyramidActivity : CardGalleryActivity() { override fun buildCards() {val bgr = Utils.loadResource(this, R.drawable.lena)val rgb = Mat()Imgproc.cvtColor(bgr, rgb, Imgproc.COLOR_BGR2RGB)bgr.release()buildGauss(rgb)rgb.release() } private fun buildGauss(source: Mat) {val gaussList = arrayListOf<Mat>()gaussList.add(source)for (i in 0..2) { val gauss = Mat() Imgproc.pyrDown(gaussList[i], gauss) gaussList.add(gauss)}for (i in gaussList.indices) { val bitmap = Bitmap.createBitmap(gaussList[i].width(),gaussList[i].height(),Bitmap.Config.ARGB_8888 ) Utils.matToBitmap(gaussList[i], bitmap) cards.add(Card('Gauss${i}', bitmap))}buildLaplace(gaussList) } private fun buildLaplace(gaussList: List<Mat>) {val laplaceList = arrayListOf<Mat>()for (i in gaussList.size - 1 downTo 1) { val lap = Mat() val upGauss = Mat() if (i == gaussList.size - 1) {val down = Mat()Imgproc.pyrDown(gaussList[i], down)Imgproc.pyrUp(down, upGauss)Core.subtract(gaussList[i], upGauss, lap)laplaceList.add(lap.clone()) } Imgproc.pyrUp(gaussList[i], upGauss) Core.subtract(gaussList[i - 1], upGauss, lap) laplaceList.add(lap.clone())}for (i in laplaceList.indices) { val bitmap = Bitmap.createBitmap(laplaceList[i].width(),laplaceList[i].height(),Bitmap.Config.ARGB_8888 ) Utils.matToBitmap(laplaceList[i], bitmap) cards.add(Card('Laplace${i}', bitmap))}for (gauss in gaussList) { gauss.release()}for (lap in laplaceList) { lap.release()} }}效果

Android基于OpenCV實現圖像金字塔

上面這個拉普拉斯可能看不太清,但是細看是有圖像的。讓圖片寬度充滿看看。

Android基于OpenCV實現圖像金字塔

為了看清拉普拉斯金字塔的圖像,圖片大小本身并非如此

源碼

github.com/onlyloveyd/…

以上就是Android基于OpenCV實現圖像金字塔的詳細內容,更多關于Android OpenCV圖像金字塔的資料請關注好吧啦網其它相關文章!

標簽: Android
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
国产精品九九| 亚洲精品黄色| 国产一区调教| 国产一区二区三区视频在线| 成人在线黄色| 久久婷婷一区| 丝袜亚洲另类欧美| 91精品在线免费视频| 久久香蕉网站| 国产99久久| 天堂久久一区| 久久精品二区亚洲w码| 亚洲www啪成人一区二区| 亚洲免费激情| 国产探花一区在线观看| 国产精品久久久久久久久久白浆| 国产精品久久久久9999高清| 亚洲综合电影| 欧美中文日韩| 国产精品www994| 久久九九精品| 日韩精品欧美大片| 色一区二区三区四区| 国产亚洲一区在线| 国产精品啊v在线| 免费av一区| 日韩精品高清不卡| 成年男女免费视频网站不卡| 在线一区欧美| 欧美激情精品| 欧洲一区二区三区精品| 蜜臀久久99精品久久久画质超高清 | 亚洲va久久| 超碰在线99| 亚洲资源在线| 视频小说一区二区| 国产欧美一区二区精品久久久| 亚洲成av在线| 久久国内精品自在自线400部| 91精品xxx在线观看| 亚洲ab电影| 99免费精品| 国产乱子精品一区二区在线观看| 日本韩国欧美超级黄在线观看| 综合激情婷婷| 欧美sss在线视频| 久久激情综合网| 欧美美女一区| 日韩av自拍| 欧美精品影院| 亚洲一区二区免费看| 狠狠久久伊人| 日本中文字幕视频一区| 三上悠亚国产精品一区二区三区| 欧美日韩xxxx| 欧美专区18| 播放一区二区| 国际精品欧美精品| 日韩**一区毛片| 在线亚洲精品| 欧美精品一二| 欧美成a人国产精品高清乱码在线观看片在线观看久 | 日韩精品看片| 国产精品成人一区二区网站软件| 蜜臀91精品一区二区三区| 午夜欧美巨大性欧美巨大| 国产精品hd| 日韩不卡在线观看日韩不卡视频| 国产视频亚洲| 欧美另类专区| 激情五月色综合国产精品| 日韩理论片av| 都市激情国产精品| 18国产精品| 亚洲精品第一| 综合国产精品| 一区二区高清| 蜜臀久久99精品久久久久宅男| 亚洲激情中文| 九一精品国产| 欧美特黄一级| 国产精品人人爽人人做我的可爱| 欧美日韩一二三四| 久久精品国产大片免费观看| 日韩国产欧美| 99精品国产一区二区三区| 亲子伦视频一区二区三区| 肉色欧美久久久久久久免费看| 久久免费视频66| 麻豆国产一区| 精品三级av| 成人亚洲欧美| 欧美不卡高清一区二区三区| 美女一区网站| 99精品电影| 国产主播一区| 久久国产高清| 天海翼亚洲一区二区三区| 亚洲青青久久| 91嫩草精品| 欧美国产日韩电影| 久久影院一区二区三区| 麻豆成人av在线| 欧美日韩伊人| 精品国产三区在线| 日韩欧美精品一区| 亚洲国产一区二区在线观看 | 国产精品久久久久久妇女| 国产精品v亚洲精品v日韩精品| 鲁大师精品99久久久| 92国产精品| 欧美在线资源| 四虎精品永久免费| 国产精品扒开腿做爽爽爽软件| 久久国产尿小便嘘嘘| 国产极品模特精品一二| 成人在线免费观看网站| 久久久一二三| 视频一区视频二区中文字幕| 日韩精品亚洲专区在线观看| 久久av资源| 日韩欧美国产精品综合嫩v| 久久精品1区| 男人的天堂久久精品| 欧美视频一区| 日韩欧美三级| 日韩在线一二三区| 久久99久久人婷婷精品综合| 日韩精品免费一区二区三区| 欧美.日韩.国产.一区.二区| 最新亚洲国产| 成午夜精品一区二区三区软件| 午夜欧美在线| 欧美日韩一区自拍| 999久久久国产精品| 日本亚洲欧洲无免费码在线| 精品一区二区三区视频在线播放| 久久久国产亚洲精品| 另类亚洲自拍| 麻豆精品在线观看| 在线日韩中文| 国产欧美啪啪| 欧美日韩一二三四| 久久国产精品免费一区二区三区| 欧美黄色精品| 日韩午夜高潮| 国产成人免费精品| 美国欧美日韩国产在线播放| 久久午夜影院| 在线精品一区二区| 高清一区二区三区av| 老牛影视一区二区三区| 精品美女久久| 亚洲精选成人| 999久久久亚洲| 国产欧美一区| 老鸭窝亚洲一区二区三区| 久久一区视频| 综合一区在线| 国产欧美一区二区三区精品酒店 | 日韩亚洲精品在线| 精品精品国产三级a∨在线| 国产精品日本| 国产白浆在线免费观看| 日本在线视频一区二区| 日韩精品一区二区三区免费观看| 欧美一区成人| 视频一区在线视频| 99视频精品全国免费| 精品成av人一区二区三区| 亚洲三级观看| 日韩亚洲国产欧美| 精品久久久中文字幕| 91成人在线精品视频| 男人的天堂亚洲一区| 中文字幕系列一区| 精品视频一区二区三区在线观看 | 国产成人免费视频网站视频社区| 亚洲精品大全| 夜夜精品视频| 成人久久一区| 国产色播av在线| 日韩高清二区| 亚洲人成毛片在线播放女女| 欧美精品激情| 久久中文亚洲字幕| 国产伦久视频在线观看| 欧美激情91| 欧美在线精品一区| 亚洲精品乱码| 亚洲一区国产| 欧美日韩视频一区二区三区| 蜜桃精品在线| 99久久久久| 久久一区二区三区喷水| 中文字幕系列一区| 久久高清免费| 国产麻豆久久| 久久久久久美女精品| 久久久久亚洲|