gpt4 book ai didi

c++ - 受光照影响的边缘检测

转载 作者:太空宇宙 更新时间:2023-11-03 22:48:57 24 4
gpt4 key购买 nike

我有这张灰度原始图像:

enter image description here

我想检测物体的边缘。但是,它会受到边缘附近光照的影响。这是我在高斯模糊和 Canny 边缘检测之后得到的:

enter image description here

这是我的代码:

    cv::cvtColor(imgOriginal, imgGrayscale, CV_BGR2GRAY);       // convert to grayscale

cv::GaussianBlur(crop, // input image
imgBlurred, // output image
cv::Size(5, 5), // smoothing window width and height in pixels
5); // sigma value, determines how much the image will be blurred

cv::Canny(imgBlurred, // input image
imgCanny, // output image
0, // low threshold
100); // high threshold

光源在物体下方。物体边缘的照明来自光源或光的反射。他们总是在同一个地方。

照明也被检测为边缘。我尝试了其他几种方法,例如连接组件标记和使用示例代码(这里是初学者)对图像进行二值化,但都无济于事。有什么方法可以检测干净的边缘照明吗?

最佳答案

可以使用一些 erosion 去除背景光 block 。具有相当大的内核,因为对象比光 block 大得多

您可以尝试的另一种常用技术是使用 distance transform + watershed .距离变换可能会返回您确定在对象内部的(因为对象几乎没有黑暗区域)。 Watershed 将尝试找到与确认的相连(通过比较梯度)的区域。如果距离变换给出对象内部的多个点,您可能需要在分水岭之后组合多个区域。

关于c++ - 受光照影响的边缘检测,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42639606/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com