首页 > 其他 > 详细

opencv学习笔记(四)----图像的形态学操作

时间:2019-03-24 01:19:34      阅读:207      评论:0      收藏:0      [点我收藏+]

图像的形态学操作有基本的腐蚀和膨胀操作和其余扩展形态学变换操作(高级操作)-----开运算,闭运算,礼帽(顶帽)操作,黑帽操作。。。(主要也是为了去噪声,改善图像)

形态学操作都是用于处理二值图像(其实也可以用于彩图,只是结果....)的,1位白,0位黑。。。

主要是基于卷积核的操作,设立一个指定大小的核,然后用这个核的中心点(默认的,可以修改)分别在每个像素点对照一遍,如果有与周围的值不同的改变值(1为0,0为1)就是腐蚀操作,

将周围像素的最大值赋给全部像素为膨胀操作,其他高级操作都是在腐蚀和膨胀的基础之上的操作。。

图像膨胀是图像腐蚀的逆运算


图像腐蚀操作

 

#图像腐蚀
     #dst = cv.erode(src,kernel,iterations)  # kennel卷积核  默认为3*3    iterations迭代次数  默认为1
img = cv.imread("E:/pictures/1.jpeg")
kernel = np.ones((5,5),np.uint8)               #设置一个5*5的核
erode = cv.erode(img,kernel,iterations=9)      
cv.imshow("orginal",img)
cv.imshow("erode",erode)
cv.waitKey()
cv.destroyAllWindows()

 

  技术分享图片技术分享图片

 


图像膨胀:

 

#图像膨胀
img = cv.imread("E:/pictures/erode.jpg",cv.IMREAD_UNCHANGED)
kernel = np.ones((5,5),np.uint8)
erode = cv.erode(img,kernel,iterations=1)
dilate = cv.dilate(erode,kernel,iterations=1)
cv.imshow("orginal",img)
cv.imshow("erode",erode)
cv.imshow("dilate",dilate)
cv.waitKey()
cv.destroyAllWindows()

 技术分享图片

  


开运算:先腐蚀后膨胀,用来消除小物体、在纤细点处分离物体、平滑较大物体的边界的同时并不明显改变其面积。

#开运算         开运算=膨胀(腐蚀(img))
img = cv.imread("E:/pictures/close1.png")
kernel = np.ones((6,6),np.uint8)
morphologyEx = cv.morphologyEx(img,cv.MORPH_OPEN,kernel)     #主要是MORPH_OPEN参数
cv.imshow("orginal",img)
cv.imshow("morphologyEx",morphologyEx)
cv.waitKey()
cv.destroyAllWindows()

  技术分享图片

 


闭运算:先膨胀后腐蚀,闭运算能够排除小的黑色区域。

#闭运算         开运算=腐蚀(膨胀(img))
img = cv.imread("E:/pictures/close1.png")
kernel = np.ones((7,7),np.uint8)
morphologyEx = cv.morphologyEx(img,cv.MORPH_CLOSE,kernel)     #主要是MORPH_CLOSE参数
cv.imshow("orginal",img)
cv.imshow("morphologyEx",morphologyEx)
cv.waitKey()
cv.destroyAllWindows()

  技术分享图片技术分享图片


梯度运算:膨胀图与腐蚀图之差,通常用来保留边缘轮廓(不是轮廓和边缘识别)

#梯度运算        梯度运算=膨胀-腐蚀
img = cv.imread("E:/pictures/close1.png")
kernel = np.ones((7,7),np.uint8)
morphologyEx = cv.morphologyEx(img,cv.MORPH_GRADIENT,kernel)     #主要是MORPH_GRADIENT# 参数
cv.imshow("orginal",img)
cv.imshow("morphologyEx",morphologyEx)                 #礼帽=原图-开运算   得到噪声
cv.waitKey()                                           #黑帽=闭运算-原图   得到较小的点
cv.destroyAllWindows()                            #礼帽和黑帽操作都是参数的不同,就不一一上代码了  #MORPH_TOPHAT     #MORPH_BLACKHAT

  技术分享图片技术分享图片

 

opencv学习笔记(四)----图像的形态学操作

原文:https://www.cnblogs.com/ling2000/p/10586175.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!