【问题标题】:OpenCV : Reversing the negative areas of an imageOpenCV:反转图像的负片区域
【发布时间】:2020-01-31 19:07:43
【问题描述】:

我在 c++/Objective C 项目中使用 OpenCV 3.4.6,并给出了一个带有负矩形区域的图像,如下所示:

我应该检测那些负面区域,将它们反转,最后得到原始图像。

我尝试使用findContours,增强原始图像的对比度或添加阈值,但未检测到矩形。 p>

这是我尝试过的测试之一:

Mat contrasted = [self enhanceContrastTo: matOriginal];

Mat thresholded;
threshold(contrasted, thresholded, 125, 241, THRESH_BINARY);

std::vector<std::vector<cv::Point> > contours;
std::vector<Vec4i> hierarchy;

findContours( thresholded, contours, hierarchy, CV_RETR_EXTERNAL, CV_RETR_TREE );

/* contrast method */
+(Mat)enhanceContrastTo:(Mat)image {

 cv::Mat lab_image;
 cv::cvtColor(image, lab_image, CV_BGR2Lab);

 // Extract the L channel
 std::vector<cv::Mat> lab_planes(3);
 cv::split(lab_image, lab_planes);  // now we have the L image in lab_planes[0]

 // apply the CLAHE algorithm to the L channel
 cv::Ptr<cv::CLAHE> clahe = cv::createCLAHE();

 // clahe->setClipLimit(4);
 clahe->setClipLimit(3);

 cv::Mat dst;
 clahe->apply(lab_planes[0], dst);

 // Merge the the color planes back into an Lab image
 dst.copyTo(lab_planes[0]);
 cv::merge(lab_planes, lab_image);

 // convert back to RGB
 cv::Mat image_clahe;
 cv::cvtColor(lab_image, image_clahe, CV_Lab2BGR);

 return image_clahe;
}

矩形是肉眼清晰可见的,希望opencv也能识别出来但是不知道怎么识别。

有什么想法吗?

谢谢

【问题讨论】:

标签: c++ objective-c opencv image-processing


【解决方案1】:

这个特定的问题并不太复杂,但即使是较小的变体也会变得复杂。我可以就几个足以解决问题的简单想法为您提供建议。

1) 您可以检查相邻点是否接近反向而不是轮廓 - 这应该过滤掉最不相关的边缘。但仅检查近反转是不够的,因为单调灰色区域 (127) 也符合标准。还需要最小的阈值差异。

2) 由于矩形平行于轴 - 您可以简单地沿着每一行和每一列计算可能是反转矩形边缘的像素数。最好不要只计算数字 - 而是检查您是否有此类像素的连续大序列并记录这些片段的确切位置。

3)使用找到的反转边缘像素的段(或只是行和列的索引)来制作反转矩形的候选,然后进行最终验证。

这只是一个算法草案 - 它肯定需要改进。我不知道你为什么要使用轮廓函数。

【讨论】:

  • 感谢您的回复!我认为 findCountours 可以工作,因为负区域与图像的其余部分非常分离,所以我相信可以一次性识别出矩形。现在我正在遵循你的建议,但我没有得到好的结果(我可能做错了什么)。如果有一个功能可以理解这些区域与其他区域不同,那就太好了
  • @NucciDev 没有任何东西可以识别反向块。只有边缘与其他边缘有些不同。也许一些聪明的人工智能可以分辨出来。您是否能够通过建议识别行/列?如果不尝试找出原因。
猜你喜欢
  • 2022-11-19
  • 2013-07-12
  • 2013-02-10
  • 2019-01-25
  • 2023-03-03
  • 2016-10-23
  • 2014-01-07
  • 1970-01-01
  • 2013-11-24
相关资源
最近更新 更多