python灰度处理_python 简单图像处理(14) 灰度图腐蚀和膨胀,开运算、闭运算...

在前面,我们讲了二值图的腐蚀和膨胀运算

其实我们很容易把腐蚀和膨胀的概念扩展到灰度图上面去

在讲二值图时,我们把粗框区域作为黑色区域

而对于灰度图,我们把粗框区作为整个图形区域

对于图形中的任一点,以其为中心的一个窗口,在窗口与原图的重合部分。

若我们把重合区域中所有点灰度值的最大值赋给当前点,就是对灰度图的腐蚀操作

若我们把重合区域中所有点灰度值的最小值赋给当前点,就是对灰度图的膨胀操作

我们能看到,除了图像边缘的点之外,一般点的重合区域都和所选的窗口一样大

如图中,我们把一个圆作为一个窗口。同样,你能把任意形状作为窗口

好啦,我们就以方框作为窗口来编程

importcvdefChange(image,flag=0,num=2):

w=image.width

h=image.height

size=(w,h)

iChange=cv.CreateImage(size,8,1)foriinrange(h):forjinrange(w):

a=[]forkinrange(2*num+1):forlinrange(2*num+1):if-1

a.append(image[i-num+k,j-num+l])ifflag==0:

k=max(a)else:

k=min(a)

iChange[i,j]=kreturniChange

image=cv.LoadImage('lena.jpg',0)

iCorrode=Change(image)

iExpand=Change(image,1)

iOpen=Change(iCorrode,1)

iClose=Change(iExpand)

cv.ShowImage('image',image)

cv.ShowImage('iCorrode',iCorrode)

cv.ShowImage('iExpand',iExpand)

cv.ShowImage('iOpen',iOpen)

cv.ShowImage('iClose',iClose)

cv.WaitKey(0)

函数中flag为0表示腐蚀,为其它值是表示膨胀

num=2 表示为5×5的窗口

我们可以在调用函数的时候改变窗口的大小

我们在处理的时候用了多层循环,所以计算会花很长时间,我用一幅256×256的图。跑上面的程序需要花六七秒的时间

不知道有没有什么好方法

好了,我们来看看运行效果吧

(若例子中使用的图有版权问题,请与我联系)

腐蚀图像相对原图偏亮,膨胀图像相对原图偏暗

好啦,这就是灰度图的腐蚀操作

和前面的二值图操作其实很像

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值