我试图用一些图像处理方法来检测附图中显示的两条垂直线。这条线的对比度很低。
位置用黄色箭头显示在第一个图像中。原始图像也附呈。
我尝试使用adaptiveThresholding和正常的阈值,在本地窗口使用最大值和最小值。但我没能察觉到线路。
如何在图像处理中检测出两条垂直线?


发布于 2017-10-02 09:53:45
当亮像素对比度低时,有一些技巧。有一种阈值化方法- otsu阈值法(method),它可以用来检测直方图的光明一面。在此之后,您可以将直方图的这一部分规范化为(0,255),并将0设置为更暗的像素,如下所示:
cv::Mat img = cv::imread("E:\\Workspace\\KS\\excercise\\sjB8q.jpg", 0);
cv::Mat work;
for (int i = 0; i < 4; i++) // number of iterations has to be adjusted
{
cv::threshold(img, work, 30, 255, CV_THRESH_OTSU);
cv::bitwise_and(img, work,img);
cv::normalize(img, img, 0, 255, cv::NORM_MINMAX, -1, work);
}然后,您的对比将更好地在下面的图片(对于不同的迭代):
i=2:

i=4:

I =6:

在此之后,检测暗线应该更容易。这个答案只是对想法的解释。如果你想知道更多,请发表评论。
https://stackoverflow.com/questions/46522746
复制相似问题