小y越来越忙,感觉事情也越来越多。虽然去杭州6年了,但是正儿八经在杭州不到3年,基本在出差。
人生就像十字坡,怎么走?走错了瘦的要被填河,胖的的要做成黄牛包子。也有可能走好了当官,也有可能走错了成了梁山好汉。
图像处理也不能停,今天写出来图像的膨胀和腐蚀。膨胀在matlab中定义是这样的
首先创建个单位举证,因为好观察。使用命令是eye
。
这是个6X6的矩阵,其中对角线为1。
图像也是两边黑中间白。可以使用imshow()
查看
首先理解膨胀 ,通俗的说,膨胀就是把1行1变成多行1。
举个例子,来个1,1的2X1的矩阵,通过imdilate
函数来处理图像。
运行此函数先查看结果再反推过程,再实验证明。
结果是在对角线上面又加了1层1。那我如果试试这个数组呢。
还是按之前结果运行,结果会不会是
请看实验。看来不是这样的。
如果是[1;1]
的参数呢?
往下一了一列。
如果是[1;1;1]
呢?
不是很好推测,在查阅资料后看到结构元素,matlab定义如下
小y确实很久没认真看数学了,不会计算了,但是可以从已知的实验中得出,膨胀是针对二值图中的1做处理,及黑变白。
那么对0怎么做处理呢,这必须需要用到腐蚀了。
还是使用之前的方案,先搞个单位矩阵实验下,别问我为啥这么爱用单位矩阵,因为特殊。在matlab中腐蚀是imerode
,使用的腐蚀的结构元素为[1,1]
腐蚀完成的结果是它。看不懂怎么来的就看看matlab的介绍
matlab这样说
还是没办法解释,通过操作可以得到腐蚀是针对二值图中的0做处理,即白变黑。
最后使用randi
创建个1000X1000的随机矩阵,矩阵取值0 or 1。
使用imshow读出此举证。
腐蚀看下效果
膨胀在看下效果
膨胀和腐蚀参数都是
matlab
strel('disk', 1)
其中strel长成这样。
不过说实话,不是很好用。这玩意还需要自己手搓。
把这个图先膨胀后腐蚀,和先腐蚀后膨胀都演示下。
看的有点害怕,然后试试先腐蚀后膨胀。
确实不好用。