0
点赞
收藏
分享

微信扫一扫

python RGB转HSV 阴影识别

悄然丝语 2022-05-01 阅读 50
  • 如何将RGB图像转为HSV图像
    在这里插入图片描述
    原图如上,进行HSV转换。
import cv2
image = r'E:\odmxiaoyuan\notree\right\class_rec_A\10\18.jpg'
img = cv2.imread(image)
img_gray=cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)#转为灰度图
img_hsv =cv2.cvtColor(img,cv2.COLOR_BGR2HSV)#转换为HSV三通道图像
H,S,V=cv2.split(img_hsv)#将三通道分开
plt.figure(figsize=(10,4.5))
fs = 15
plt.subplot(2,2,1)
plt.tick_params(labelbottom=False, labelleft=False)
plt.imshow(img_hsv,cmap='hsv')
plt.title('HSV', fontsize=fs)
plt.subplot(2,2,2)
plt.tick_params(labelbottom=False, labelleft=False)
plt.imshow(H)
plt.title('H(hue)', fontsize=fs)
plt.subplot(2,2,3)
plt.tick_params(labelbottom=False, labelleft=False)
plt.imshow(S)
plt.title('S(saturation)', fontsize=fs)
plt.subplot(2,2,4)
plt.tick_params(labelbottom=False, labelleft=False)
plt.imshow(V)
plt.title('V(value)', fontsize=fs)

在这里插入图片描述
H为色调,S为饱和度,V为亮度。
在HSV模型中,阴影区域主要有三个特点:
①具有更大的色调值H;
②具有高饱和度S,因为散射光线主要来自波长更短的蓝紫色光;
③太阳光线被阻挡,导致明度V较低。
1、检测阴影的方法直接的是阈值法。就是使用一个阈值 T 0 T_0 T0使得 T > T 0 T>T_0 T>T0则为阴影, T < T 0 T<T_0 T<T0则为非阴影。这个阈值可使用迭代来确定:
大律法(Otsu)计算阈值

m = double(((s - v) / (h + s + v)))
img_nos=np.where(m,255,img_gray)#阴影部分像素转为255,其他为灰度值

2、连续两次进行HSV彩色空间变换,区分阴影。

优化:进行图像的腐蚀和扩展算子将散落的点形成面。

举报

相关推荐

0 条评论