计算机视觉 OpenCV Android | 图像操作之 自定义滤波(模糊、锐化、梯度)、形态学操作(膨胀腐蚀、开闭操作、黑帽顶帽、形态学梯度)(更新ing)

1. 自定义滤波

  • OpenCV中除了之前说的几种常见的滤波方法外,还支持自定义卷积核,用于实现自定义滤波

  • 这一节笔记就通过自定义卷积核与相关API函数实现图像卷积的模糊、锐化、梯度计算这三个典型的卷积处理功能。

  • 卷积核本质是用Mat对象+put()置入数据实现的;
  • 自定义卷积核普适步骤:
     a.新建Mat对象
     b.新建用于存储数据的数组
     c.数据数组put进Mat对象;

自定义卷积核调用的滤波API与参数解释具体如下:

  • filter2D(Mat src, Mat dst, int ddepth, Mat kernel)
    src:表示输入图像。
    dst:表示输出图像。
    ddepth:表示输出图像深度-1表示与输入图像一致即可。
    kernel:表示自定义图像卷积

下面笔记几种常用的自定义卷积核

1.1.模糊

最常见的均值模糊的卷积核如下:
图为3×3均值模糊卷积核

自定义3×3的模糊卷积核代码如下:

Mat k = new Mat(3, 3, CvType.CV_32FC1);
float[] data = new float[]{1.0f/9.0f,1.0f/9.0f,1.0f/9.0f, 
      1.0f/9.0f, 1.0f/9.0f, 1.0f/9.0f, 
      1.0f/9.0f, 1.0f/9.0f, 1.0f/9.0f};
k.put(0, 0, data);

除了自定义均值模糊之外,
还可以实现自定义近似高斯模糊卷积核,卷积核如下:

不同权重近似高斯卷积核模糊

近似高斯模糊卷积核实现如下:

Mat k = new Mat(3, 3, CvType.CV_32FC1);
float[] data = new float[]{0,1.0f/8.0f,0,
             1.0f/8.0f, 0.5f, 1.0f/8.0f,
             0, 1.0f/8.0f, 0};
k.put(0, 0, data);
1.2.锐化
  • 图像锐化可以提高图像的对比度
    轻微去模糊
    提升图像质量

  • 通过自定义锐化算子可以实现图像的锐化,
    对输入图像实现质量增强与提升

常见的两个锐化算子如下:


自定义锐化算子实现:

Mat k = new Mat(3, 3, CvType.CV_32FC1);
float[] data = new float[]{0,-1,0,-1, 5, -1,0, -1, 0};
k.put(0, 0, data);
1.3.梯度
  • 图像边缘图像像素变化比较大的区域边缘在频域里属于高频部分),是图像特征表征的候选区域之一,
    在图像特征提取、图像二值化等方面有很重要的应用
  • 而通过自定义卷积算子实现梯度图像查找边缘的关键步骤之一
    最简单计算图像梯度功能的卷积核Robot算子,其表示如下:

    其中,左侧是Robert算子的X方向梯度、右侧是Y方向梯度。

    自定义Robert算子实现如下:
Mat kx = new Mat(3, 3, CvType.CV_32FC1);
Mat ky = new Mat(3, 3, CvType.CV_32FC1);
// X方向梯度算子
float[] robert_x = new float[]{-1,0,0,1};
kx.put(0, 0, robert_x)
// Y方向梯度算子
float[] robert_y = new float[]{0,1,-1,0};
ky.put(0, 0, robert_y);

使用上述自定义的卷积核实现自定义滤波的代码如下:

Imgproc.filter2D(src, dst, -1, k);

完整的演示代码可查看文末的GitHub源代码;
GitHub项目对应的目录





2. 形态学操作

  • OpenCV中提供了几个非常有用的图像形态学操作API,其工作原理与卷积类似
    不同的是,
    我们称卷积核结构元素
    计算方式也由算术运算改为简单集合运算逻辑运算
    而且可以将结构元素定义为任意结构
  • 最常见的结构元素有矩形、线形、圆形、十字交叉形等。
  • OpenCV支持的图像形态学操作主要有膨胀、腐蚀、开操作、闭操作、黑帽、顶帽、形态学梯度
2.1.腐蚀与膨胀
  • 膨胀与腐蚀是最基本的图像形态学操作
    与卷积计算类似,其也需要一个类似卷积核的结构元素,与输入图像像素数据完成计算
    腐蚀与膨胀的常见操作对象主要是二值图像或者灰度图像
    OpenCV所有的形态操作都可以扩展到彩色图像
    腐蚀与膨胀扩展到彩色图像就是前面提到的图像最小值与最大值滤波

关于腐蚀与膨胀操作,本参考书中讲得比较概况,而这方面我之前上课学到过,课内讲得相对详细些,下面便参考我校授课的郭素梅教授的教学PPT,做一个总结:

  • 首先是腐蚀操作
    其意义便是说,对于输入图像A:
    能完全包含结果元素B的区域,则把B嵌进去,并仅留下一个被B的核中心覆盖下的像素块;
    不能的,则淘汰掉(腐蚀/削 掉);

    结合上图应该很容易能够理解;

  • 另外还有一个拓展技巧,如下:
    其意思是说,我们可以根据结构元素以及输入图像的形状腐蚀操作“放入模板,只留中心”的原理
    在面对较大的输入图像时,可以先把最外层的(可放入B的)腐蚀边界画出来,即可预算出腐蚀结果

  • 下面是腐蚀效果(腐蚀操作的作用的一个实例)

    腐蚀操作的作用:
    即同上篇笔记的最小值滤波一样,
    可以去除小的图像噪声或者图像元素对象的大小丝黏连,抑制图像像素极大值;




  • 接下来是膨胀操作
    以及其技巧:
  • 其意义可以这样理解:
    结构元素B与输入图像A有交集条件
    令B绕着A转一圈,这样B的途经的这一圈地方会形成一个外围区域
    这样一来,这个外围区域是由若干个结构元素B构成的,
    而每个B都有一个核中心,若干个核中心会在A外围圈出一个B的“核中心边界”
    接下来,令A的像素块A的边界拓展B的“核中心边界”,即完成膨胀操作

  • 上面是比较正规地用边界交集理解完成膨胀操作
    我们私自暂称它为“核边界交集法”
    其实这样的做法也等价于下面这种操作:
    B的核中心沿着A的边界走一圈,
    途经A的一个像素块
    都令A的像素块A的边界拓展B的“核边界”
    这种操作的结果其实也是等同于上面的“核边界交集法”
    为与“边界交集法”区分理解,这种方法暂称之“核中心交集法”
    下面是“核中心交集法”演示的gif图:


  • 下面是膨胀效果(膨胀操作的作用的一个实例)

    膨胀操作的作用:
    即同上篇笔记的最大值滤波一样,
    可以填充小的闭合区域以及狭窄的间断;

下面切回读书笔记。

腐蚀操作的定义如图4-8所示。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 218,122评论 6 505
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,070评论 3 395
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 164,491评论 0 354
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,636评论 1 293
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,676评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,541评论 1 305
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,292评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,211评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,655评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,846评论 3 336
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,965评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,684评论 5 347
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,295评论 3 329
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,894评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,012评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,126评论 3 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,914评论 2 355

推荐阅读更多精彩内容