python画灰度图,python图片灰度处理

  python画灰度图,python图片灰度处理

  跟我学Python图像处理,基于灰度3D图像的图像高帽操作和黑帽操作_华为云开发者社区技术博客_博客

  本文讲解了灰度三维图像的高帽操作和黑猫操作,通过Python调用OpenCV函数实现。

  本文由eastmount分享自华为云社区《[Python图像处理] 十三.基于灰度三维图的图像顶帽运算和黑帽运算》。

  本文继续深入,结合灰度3D图像讲解图像高帽操作和图像黑猫操作,通过Python调用OpenCV函数实现。

  1.图像礼帽变换,也称图像礼帽变换,是原始图像减去图像开运算的结果。它常被用来解决由于光照不均匀造成的图像分割错误问题。该公式定义如下:

  图像高帽操作是利用一个结构元素,通过开操作从一幅图像中删除对象,以校正光照不均匀的影响。其效果图如下图所示。

  在Python中,图像封顶操作主要通过调用morphologyEx()来实现,其中参数cv2。MORPH_TOPHAT表示封顶处理,函数原型如下:

  dst=cv2.morphologyEx(src,cv2。MORPH_TOPHAT,内核)

  Src表示原始图像cv2。MORPH_TOPHAT表示图像封顶操作内核表示卷积内核,numpy.ones()函数可用于构造米粒图像,假设存在不均匀张光照。如图,我们需要调用图像封顶操作来解决光照不均匀的问题。它的Python代码如下:

  #编码:utf-8

  导入cv2

  将numpy作为np导入

  #阅读图片

  src=cv2.imread(test06.png ,cv2。IMREAD _未更改)

  #设置卷积内核

  kernel=np.ones((10,10),np.uint8)

  #图像礼帽操作

  result=cv2.morphologyEx(src,cv2。MORPH_TOPHAT,内核)

  #显示图像

  cv2.imshow(src ,src)

  cv2.imshow(result ,结果)

  #等待显示

  cv2.waitKey(0)

  2.cv2.destroyAllWindows()的运行结果如下。它有效地将米粒从背景中分离出来。

  第二,形象黑帽运营。底帽变换也称为图像黑帽运算。它是通过图像闭运算减去原始图像的结果,从而得到图像内部的孔洞或前景中的黑点。它还经常用于解决由于光照不均匀而导致的图像分割错误问题。该公式定义如下:

  图像底盖操作是通过用结构元素进行闭合操作来删除图像中的对象,常用于校正光照不均匀的影响。其效果图如下图所示。

  在Python中,图像封顶操作主要通过调用morphologyEx()来实现,其中参数cv2。MORPH_BLACKHAT表示加盖或黑帽处理。该函数的原型如下:

  dst=cv2.morphologyEx(src,cv2。MORPH_BLACKHAT,内核)

  Src表示原始图像cv2。MORPH_BLACKHAT表示图像的底帽或黑帽操作。kernel表示卷积核。可以使用numpy.ones()函数构建Python来实现图像的底帽操作,如下:

  #编码:utf-8

  导入cv2

  将numpy作为np导入

  #阅读图片

  src=cv2.imread(test06.png ,cv2。IMREAD _未更改)

  #设置卷积内核

  kernel=np.ones((10,10),np.uint8)

  #图像黑帽操作

  result=cv2.morphologyEx(src,cv2。MORPH_BLACKHAT,内核)

  #显示图像

  cv2.imshow(src ,src)

  cv2.imshow(result ,结果)

  #等待显示

  cv2.waitKey(0)

  2.cv2.destroyAllWindows()的运行结果如图所示:

  3.基于灰度三维图的高帽和黑帽操作。

  为什么图像封顶操作会消除光照不均匀的效果?一般可以用一个灰度三维图来解释算法。灰度三维图主要通过Axes3D包实现,绘制原始图像灰度三维图的代码如下:

  # -*-编码:utf-8 -*-

  将numpy作为np导入

  将cv2作为cv导入

  将matplotlib.pyplot作为plt导入

  从mpl_toolkits.mplot3d导入Axes3D

  从matplotlib导入cm

  从matplotlib.ticker导入LinearLocator,FormatStrFormatter

  #阅读图像

  img=cv.imread(test06.png )

  img=cv.cvtColor(img,cv。COLOR_BGR2GRAY)

  imgd=NP . array(img)# image class to numpy

  #准备数据

  sp=img.shape

  H=int(sp[0]) #图像高度(行)

  W=int(sp[1]) #图像的图像宽度(列)

  #图纸的初始处理

  fig=plt.figure(figsize=(16,12))

  ax=fig.gca(投影=3d )

  x=np.arange(0,w,1)

  y=np.arange(0,h,1)

  x,y=np.meshgrid(x,y)

  z=imgd

  surf=ax.plot_surface(x,y,z,cmap=cm.coolwarm)

  #自定义Z轴

  ax.set_zlim(-10,255)

  ax . zaxis . Set _ major _ locator(linear locator(10))#设置Z轴上网格线的密度。

  #将Z的值字符串转换为float并保留两位小数

  ax . zaxis . set _ major _ formatter(FormatStrFormatter( % . 02f ))

  #设置坐标轴的标签和标题

  ax.set_xlabel(x ,size=15)

  ax.set_ylabel(y ,size=15)

  ax.set_zlabel(z ,size=15)

  ax.set_title(表面图,weight=bold ,size=20)

  #在右侧添加颜色卡栏

  图.颜色条(表面,收缩=0.6,纵横比=8)

  plt.show()的运行结果如下图所示:

  从图像中像素的趋势来看,说明图像受到各部分光照不均匀的影响,导致背景灰度不均匀,其中凹陷对应的是图像中灰度值相对较小的区域。图像白帽运算后的三维灰度图像的编码如下:

  # -*-编码:utf-8 -*-

  将numpy作为np导入

  将cv2作为cv导入

  将matplotlib.pyplot作为plt导入

  从mpl_toolkits.mplot3d导入Axes3D

  从matplotlib导入cm

  从matplotlib.ticker导入LinearLocator,FormatStrFormatter

  #阅读图像

  img=cv.imread(test06.png )

  img=cv.cvtColor(img,cv。COLOR_BGR2GRAY)

  #图像黑帽操作

  kernel=np.ones((10,10),np.uint8)

  结果=cv.morphologyEx(img,cv。MORPH_BLACKHAT,内核)

  #图像类到numpy

  imgd=np.array(结果)

  #准备数据

  sp=结果.形状

  H=int(sp[0]) #图像高度(行)

  W=int(sp[1]) #图像的图像宽度(列)

  #图纸的初始处理

  fig=plt.figure(figsize=(8,6))

  ax=fig.gca(投影=3d )

  x=np.arange(0,w,1)

  y=np.arange(0,h,1)

  x,y=np.meshgrid(x,y)

  z=imgd

  surf=ax.plot_surface(x,y,z,cmap=cm.coolwarm)

  #自定义Z轴

  ax.set_zlim(-10,255)

  ax . zaxis . Set _ major _ locator(linear locator(10))#设置Z轴上网格线的密度。

  #将Z的值字符串转换为float并保留两位小数

  ax . zaxis . set _ major _ formatter(FormatStrFormatter( % . 02f ))

  #设置坐标轴的标签和标题

  ax.set_xlabel(x ,size=15)

  ax.set_ylabel(y ,size=15)

  ax.set_zlabel(z ,size=15)

  ax.set_title(表面图,weight=bold ,size=20)

  #在右侧添加颜色卡栏

  图.颜色条(表面,收缩=0.6,纵横比=8)

  plt.show()效果图如下图,对应的灰度更集中在10到100的范围内,证明不均匀的背景已经被大致消除,有利于后续的阈值分割或者图像分割。

  第一时间点击了解华为云鲜技术~

  原创作品来自华为云开发者联盟,

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: