我是新的图像处理,我正在处理下面的图像和应用阈值,以识别边缘与以下代码
import cv2
import numpy as np
img = cv2.imread("box.jpg")
img_gray = cv2.cvtColor(img,cv2.COLOR_RGB2GRAY)
noise_removal = cv2.bilateralFilter(img_gray,9,75,75)
ret,thresh_image = cv2.threshold(noise_removal,0,255,cv2.THRESH_OTSU)
左边是原始图像。中间是由代码中的img_gray
计算的灰度图像。右边是由thresh_imgage
计算的阈值图像。在
我的问题是从图1和图2中我们可以看到,在角点处的梯度有明显的变化,但在阈值图像中,它也包含了作为长方体对象一部分的阴影。在
我已经通过改变阈值运行了几次代码,但是没有成功地只得到了盒子。我做错什么了?有人能帮忙吗?谢谢。在
我刚刚遇到了另一个关于选择最佳阈值进行边缘检测的解决方案。我之前的回答是关于自适应阈值,你对此非常了解。在
所谓的最优是指根据灰度图像的中值值选择两个值(下限和上限)。下面的代码将向您展示如何完成此操作:
0.33的西格玛值是数据科学领域中最理想的值。在
插图:如果您观察到统计中的高斯曲线,则分布中会考虑曲线两侧0.33之间的值。假设这些点之外的任何值都是异常值。因为图像被认为是数据,所以这里也假设了这个概念。在
看看这个:
现在,你经常贴的第二个盒子:
你如何改善这一点?在
我一直想试试下面的方法。试试看,一定要告诉我:
也许有更好的方法来发现我还没有遇到的。但这是一个伟大的和有趣的开始方式。在
您应该考虑尝试自适应阈值
我得到的是:
现在使用THIS PAGE中提到的形态学运算你可以得到你想要的对象。在
相关问题 更多 >
编程相关推荐