电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

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

Android基于OpenCV實現圖像金字塔

瀏覽:163日期: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
相關文章:
主站蜘蛛池模板: 食品无尘净化车间,食品罐装净化车间,净化车间配套风淋室-青岛旭恒洁净技术有限公司 | 一体化污水处理设备,一体化污水设备厂家-宜兴市福源水处理设备有限公司 | 高低温万能试验机-复合材料万能试验机-馥勒仪器 | 深圳宣传片制作_产品视频制作_深圳3D动画制作公司_深圳短视频拍摄-深圳市西典映画传媒有限公司 | 伊卡洛斯软装首页-电动窗帘,别墅窗帘,定制窗帘,江浙沪1000+别墅窗帘案例 | 报警器_家用防盗报警器_烟雾报警器_燃气报警器_防盗报警系统厂家-深圳市刻锐智能科技有限公司 | 专注提供国外机电设备及配件-工业控制领域一站式服务商-深圳市华联欧国际贸易有限公司 | 搅拌磨|搅拌球磨机|循环磨|循环球磨机-无锡市少宏粉体科技有限公司 | 信阳网站建设专家-信阳时代网联-【信阳网站建设百度推广优质服务提供商】信阳网站建设|信阳网络公司|信阳网络营销推广 | 稳尚教育加盟-打造高考志愿填报平台_新高考志愿填报加盟_学业生涯规划加盟 | 骨密度检测仪_骨密度分析仪_骨密度仪_动脉硬化检测仪专业生产厂家【品源医疗】 | 新中天检测有限公司青岛分公司-山东|菏泽|济南|潍坊|泰安防雷检测验收 | 电加热导热油炉-空气加热器-导热油加热器-翅片电加热管-科安达机械 | 包头市鑫枫装饰有限公司| 郑州外墙清洗_郑州玻璃幕墙清洗_郑州开荒保洁-河南三恒清洗服务有限公司 | 消防设施操作员考试报名时间,报名入口,报考条件 | 协议书_协议合同格式模板范本大全| 耐破强度测试仪-纸箱破裂强度试验机-济南三泉中石单品站 | 武汉天安盾电子设备有限公司 - 安盾安检,武汉安检门,武汉安检机,武汉金属探测器,武汉测温安检门,武汉X光行李安检机,武汉防爆罐,武汉车底安全检查,武汉液体探测仪,武汉安检防爆设备 | 代做标书-代写标书-专业标书文件编辑-「深圳卓越创兴公司」 | 爱佩恒温恒湿测试箱|高低温实验箱|高低温冲击试验箱|冷热冲击试验箱-您身边的模拟环境试验设备技术专家-合作热线:400-6727-800-广东爱佩试验设备有限公司 | 楼承板-钢筋楼承板-闭口楼承板-无锡优贝斯楼承板厂 | 档案密集架,移动密集架,手摇式密集架,吉林档案密集架-厂家直销★价格公道★质量保证 | 山东钢格板|栅格板生产厂家供应商-日照森亿钢格板有限公司 | 清水-铝合金-建筑模板厂家-木模板价格-铝模板生产「五棵松」品牌 | 数控专用机床,专用机床,自动线,组合机床,动力头,自动化加工生产线,江苏海鑫机床有限公司 | 智能监控-安防监控-监控系统安装-弱电工程公司_成都万全电子 | 雨水收集系统厂家-雨水收集利用-模块雨水收集池-徐州博智环保科技有限公司 | 深圳成考网-深圳成人高考报名网 深圳工程师职称评定条件及流程_深圳职称评审_职称评审-职称网 | 耐力板-PC阳光板-PC板-PC耐力板 - 嘉兴赢创实业有限公司 | 船用锚链|专业锚链生产厂家|安徽亚太锚链制造有限公司 | 日本SMC气缸接头-速度控制阀-日本三菱伺服电机-苏州禾力自动化科技有限公司 | 刚性-柔性防水套管-橡胶伸缩接头-波纹管补偿器-启腾供水材料有限公司 | 智能电表|预付费ic卡水电表|nb智能无线远传载波电表-福建百悦信息科技有限公司 | 海南在线 海南一家| Trimos测长机_测高仪_TESA_mahr,WYLER水平仪,PWB对刀仪-德瑞华测量技术(苏州)有限公司 | 深圳货架厂_仓库货架公司_重型仓储货架_线棒货架批发-深圳市诺普泰仓储设备有限公司 | 烟气换热器_GGH烟气换热器_空气预热器_高温气气换热器-青岛康景辉 | 日本东丽膜_反渗透膜_RO膜价格_超滤膜_纳滤膜-北京东丽阳光官网 日本细胞免疫疗法_肿瘤免疫治疗_NK细胞疗法 - 免疫密码 | 橡胶接头|可曲挠橡胶接头|橡胶软接头安装使用教程-上海松夏官方网站 | 知名电动蝶阀,电动球阀,气动蝶阀,气动球阀生产厂家|价格透明-【固菲阀门官网】 |