首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用DeltaE色差测量图像内ROI的色差?

使用DeltaE色差测量图像内ROI的色差?
EN

Stack Overflow用户
提问于 2020-04-15 06:29:49
回答 1查看 288关注 0票数 0
  1. 我必须读取一个RGB图像
  2. ,然后我需要选择ROI
  3. 之后,我需要使用简单的颜色分割(不使用HSV图像,我被要求将RGB转换为Lab图像)从整个图像中测量ROI的色差,输出将是,ROI突出显示,背景将是灰色的,需要用python.
  4. there进行带有deltaE色差的
  5. 简单的颜色分割,可以是在彩色segmentation.
  6. then之后出现在掩模中的多个对象,然后指示我分析ROI的深度,并根据ROI的深度值分割ROI。但在这里,它是不可能得到deltaE的整个图像以及。请帮帮忙,我急需它。

我有这个图像要处理,从这里我需要分割手势部分:在这里输入图像描述

1:https://i.stack.imgur.com/nGA42.jpg

我已经编写了这么远的代码:‘开放图像并使Numpy数组'rgb’和' lab‘pic = imageio.imread('E:\JU_V2_DIGIT\RGB_Crop\RGB_P7_G0_8.png') pic2 = pic.copy() #确定图像的形状total_row,total_col,layers = pic2.shape mask= np.zeros_like(pic2) x,y= np.ogrid:total_row,:total_col # Transform in lab图片Lab_pic = color.rgb2lab(pic) L_pic,A_pic,B_pic =cv2.拆分(Lab_pic) cv2.imshow("L_Channel",L_pic) #用于L频道cv2.imshow("A_Channel",A_pic) #用于A频道cv2.imshow("B_Channel",B_pic) #用于B频道cen_x,cen_y = total_row/2,#cv2.imwrite('D:\SHROUTI\Testpictures\opencvmasking_human.jpg',_ distance_from_center /2 distance_from_center= np.sqrt((x-cen_x+10)**2+(y-cen_y-15)**2)半径=(**2+_row/3) circular_pic = distance_from_center>radius pic2circular_pic =0 pic2mask =0 circular_pic) cv2.imshow("cir_mask",pic2) Lab = color.rgb2lab(pic2) #获取掩码区L_mask,A_mask,B_mask = cv2.split(Lab) cv2.imshow("L_Channel_mask",L_mask) #用于L频道cv2.imshow("A_Channel_mask",A_mask) #用于频道cv2.imshow("B_Channel_mask",# For B Channel LMean = L_mask.mean() AMean = A_mask.mean() BMean = B_mask.mean() #For增量值DeltaL = L_pic-LMean DeltaA = A_pic- AMean DeltaB = B_pic - BMean DeltaE =B_pic-BMean DeltaE=LMean( DeltaE) cv2.imshow("deltaE",DeltaE)cv2.waryKey()‘’它显示了一个完整的白色输出图像。我不知道该怎么做。请帮助

EN

回答 1

Stack Overflow用户

发布于 2020-04-15 07:49:21

您的DeltaE显示为白色,因为您将值低于230的float64数组放入cv2.imshow()

它期望所有的值都在0,1之内。在您的例子中,每个值>= 1都变成255,因此输出图像都是白色的。

代码语言:javascript
复制
normalized = cv2.normalize(DeltaE, None, 0, 1, cv2.NORM_MINMAX)

代码语言:javascript
复制
normalized = cv2.normalize(DeltaE, None, 0, 255, cv2.NORM_MINMAX, dtype = cv2.CV_8U)

要获得DeltaE的规范化版本,您可以在没有问题的情况下显示该版本。

解决这个问题的方法是点击谷歌第一次点击“不显眼的白色”。

我不明白你为什么会为此使用三个不同的图像处理库。

OpenCV满足了您的所有需求。

pic = imageio.imread('E:\JU_V2_DIGIT\RGB_Crop\RGB_P7_G0_8.png')替换为

pic = cv2.imread('E:\JU_V2_DIGIT\RGB_Crop\RGB_P7_G0_8.png')

代码语言:javascript
复制
Lab_pic = color.rgb2lab(pic)

使用

代码语言:javascript
复制
Lab = cv2.cvtColor(pic2, cv2.COLOR_BGR2Lab)

等等..。

不需要冒奇怪的风险,因为一个库在BRG中工作,而另一个库在RGB或其他地方工作。以防万一你想知道为什么你的rgb图像看起来如此怪异。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61222616

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档