gpt4 book ai didi

android - 从照片opencv中去除眩光

转载 作者:可可西里 更新时间:2023-11-01 15:21:18 30 4
gpt4 key购买 nike

所以,我使用 opencv 来捕获文档、扫描它并裁剪它。当房间里没有照明时,它工作得很好。当房间里有一些光,并且 table 上有强光并且文件在它附近时,它也会将强光作为矩形的一部分。

如何去除照片中的眩光?

这是我用来获取我想要的图像的代码:

 Mat &image = *(Mat *) matAddrRgba;
Rect bounding_rect;

Mat thr(image.rows, image.cols, CV_8UC1);
cvtColor(image, thr, CV_BGR2GRAY); //Convert to gray
threshold(thr, thr, 150, 255, THRESH_BINARY + THRESH_OTSU); //Threshold the gray

vector<vector<Point> > contours; // Vector for storing contour
vector<Vec4i> hierarchy;
findContours(thr, contours, hierarchy, CV_RETR_CCOMP,
CV_CHAIN_APPROX_SIMPLE); // Find the contours in the image
sort(contours.begin(), contours.end(),
compareContourAreas); //Store the index of largest contour
bounding_rect = boundingRect(contours[0]);

rectangle(image, bounding_rect, Scalar(250, 250, 250), 5);

这是我所说的眩光的照片:

enter image description here

我发现的东西是使用 inRange,为颜色找到合适的标量,然后我们使用 inpaint 来移除光。这是它的一个代码 fragment ,但它总是崩溃,说它需要带 channel 的 8 位图像。

Mat &image = *(Mat *) matAddrRgba;

Mat hsv, newImage, inpaintMask;
cv::Mat lower_red_hue_range;
inpaintMask = Mat::zeros(image.size(), CV_8U);
cvtColor(image, hsv, COLOR_BGR2HSV);
cv::inRange(hsv, cv::Scalar(0, 0, 215, 0), cv::Scalar(180, 255, 255, 0),
lower_red_hue_range);
image = lower_red_hue_range;

inpaint(image, lower_red_hue_range, newImage, 3, INPAINT_TELEA);

最佳答案

我以前处理过这个问题,光照的变化一直是计算机视觉检测和描述图像的问题。我实际上训练了一个分类器,用于 HSV 颜色空间而不是 RGB/BGR,它通过改变入射光将图像映射到没有突然的亮度/暗 block 的图像(这将是标签)。这对我来说效果很好,但是,图像总是具有相同的背景(我不知道你是否也有这个)。

当然,机器学习可以解决问题,但这可能有点矫枉过正。在执行上述操作时,我遇到了 CLAHE这对于局部对比度增强非常有效。我建议你在检测轮廓之前尝试这个。此外,出于此目的,您可能希望使用不同的颜色空间,例如 HSV/Lab/Luv 而不是 RGB/BGR。您可以将 CLAHE 分别应用到每个 channel ,然后将它们合并。

如果您需要其他信息,请告诉我。我用你的图像在 python 中实现了这个,它工作得很好,但我会把编码留给你。我可能会在几天后更新我得到的结果(希望你先得到它们;))。希望能帮助到你。

Gray image

V channel of HSV after CLAHE - clipLimit=10, TileGridSize= (16, 16)

关于android - 从照片opencv中去除眩光,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43470569/

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