python 简单图像处理(13) 二值图腐蚀和膨胀,开运算、闭运算
来源:互联网 发布:mysql if函数用法 编辑:程序博客网 时间:2024/05/16 04:09
原文:http://www.cnblogs.com/xianglan/archive/2010/12/29/1921211.html
python 简单图像处理(13) 二值图腐蚀和膨胀,开运算、闭运算
我们直接看图吧
我们把粗框内的区域看作原图像
假设有一个圆在图像空间移动,取一个点作为圆的中心,若圆的区域被完全包含在原图像中
则我们把它放到腐蚀后的区域中
若只有一部分在原图像区域或没有一个点在原图区域中,我们则不会把它放在腐蚀区中
显然,粗框区域腐蚀后会变成内部填充框区域
而膨胀却恰恰相反
把粗框线看作原图的话,取原图上一点为圆的中心,所以在圆的区域都被放在膨胀区
显然,膨胀后,原图会变成外边框的区域
上面,我们是以圆为窗的,事实上你可以使用任意窗形,不过最好有一个中心点
好啦,我们来看看利用腐蚀和膨胀有什么效果吧
import cv
def Two(image):
w = image.width
h = image.height
size = (w,h)
iTwo = cv.CreateImage(size,8,1)
for i in range(h):
for j in range(w):
iTwo[i,j] = 0 if image[i,j] <220 else 255
return iTwo
def Corrode(image):
w = image.width
h = image.height
size = (w,h)
iCorrode = cv.CreateImage(size,8,1)
kH = range(2)+range(h-2,h)
kW = range(2)+range(w-2,w)
for i in range(h):
for j in range(w):
if i in kH or j in kW:
iCorrode[i,j] = 255
elif image[i,j] == 255:
iCorrode[i,j] = 255
else:
a = []
for k in range(5):
for l in range(5):
a.append(image[i-2+k,j-2+l])
if max(a) == 255:
iCorrode[i,j] = 255
else:
iCorrode[i,j] = 0
return iCorrode
def Expand(image):
w = image.width
h = image.height
size = (w,h)
iExpand = cv.CreateImage(size,8,1)
for i in range(h):
for j in range(w):
iExpand[i,j] = 255
for i in range(h):
for j in range(w):
if image[i,j] == 0:
for k in range(5):
for l in range(5):
if -1<(i-2+k)<h and -1<(j-2+l)<w:
iExpand[i-2+k,j-2+l] = 0
return iExpand
image = cv.LoadImage('pic3.jpg',0)
iTwo = Two(image)
iCorrode = Corrode(iTwo)
iExpand = Expand(iTwo)
cv.ShowImage('image',image)
cv.ShowImage('iTwo',iTwo)
cv.ShowImage('iCorrode',iCorrode)
cv.ShowImage('iExpand',iExpand)
cv.WaitKey(0)
看看运行效果吧
第一幅图是原图的灰度图,第二幅图是对其做了二值处理
对于二值图像来说,对黑色进行腐蚀与对白色进行膨胀得到的效果是一样的,
对白色进行腐蚀与对黑色进行膨胀的得到的效果是一样的。当然,你需要像我一样选取一个矩形窗作为移动的框
我们来验证一下
我们先将图像反色,再处理。验证了上面的话
我们来看看更复杂的图像吧
我们来讲两个概念:开运算和闭运算
开运算是对图像先腐蚀后膨胀
闭运算是对图像先膨胀后腐蚀
在前面的基础上,我们对腐蚀后的图像做膨胀操作得到的就是开运算的结果
对膨胀后的图像做腐蚀操作得到的就是闭运算的结果
我们来看看效果
(例子中的图片,如有版权问题,请作者与我联系,谢谢)
开运算能够除去孤立的小点,毛刺和小桥,而总的位置和形状不变
闭运算能够填平小湖(小孔),弥合小裂缝,而总的位置和形状不变
不同的窗口对运算结果会有影响
阅读全文
0 0
- python 简单图像处理(13) 二值图腐蚀和膨胀,开运算、闭运算
- 图像开运算+闭运算+腐蚀+膨胀
- 图像的膨胀和腐蚀、开运算和闭运算
- 图像处理__腐蚀和膨胀_开运算_闭运算
- 腐蚀,膨胀,开运算和闭运算
- 膨胀,腐蚀,开运算和闭运算
- 【图像处理】腐蚀膨胀与开运行、闭运算
- 图像处理算法系列 第六章 图像形态变化 膨胀 腐蚀 开运算 闭运算
- 图像的腐蚀与膨胀,闭运算与开运算
- opencv图像开运算闭运算/腐蚀膨胀
- 图像处理——灰度化、二值化、膨胀算法、腐蚀算法以及开运算和闭运算
- 形态学运算中腐蚀,膨胀,开运算和闭运算。
- 形态学运算中腐蚀,膨胀,开运算和闭运算
- 形态学运算中腐蚀,膨胀,开运算和闭运算
- 形态学运算中腐蚀,膨胀,开运算和闭运算
- 形态学运算中腐蚀,膨胀,开运算和闭运算
- 形态学运算中腐蚀,膨胀,开运算和闭运算
- 形态学运算中腐蚀,膨胀,开运算和闭运算
- 如何定义一个只能在栈/堆上生成对象的类
- 通过URL实现下载
- java基础之数字处理类
- md5 加密工具类
- Prime Ring Problem
- python 简单图像处理(13) 二值图腐蚀和膨胀,开运算、闭运算
- JSP学习笔记(4)_HTTP协议
- 最小表示法, 求字典序最小
- C++并发编程框架Theron(4)——Hello world!
- 比较三个数大小
- Scrapy-常用命令
- apache AH01630: client denied by server configuration错误解决方法
- Python 多版本共存之 pyenv
- Scrapy-基本用法