请提出一种新的方法或至少一种方法,使任何这些足够强大,以良好的速度检测
我有一些图像(大部分是从电脑屏幕上拍摄的),其中一些闪光灯从相机或所谓的是目前有。我想放弃这些类型的图像或至少通知用户重新拍摄。我怎么能这么做
我没有足够的数据来训练深度学习分类模型,例如Fast Glare Detection
Here is the Data of more than 70 images的
我尝试了以下几种方法:
- Bright area detection using OpenCV
cv2.minMaxLoc
function,但它总是返回该地区,无论什么,大多数情况下,它失败了我的类型的图像。
1.我找到了this code for removal but it is in Matlab - This code uses
Clahe
adjustement但问题是它删除而不是检测 - This one looks promising but is not robust enough for my image type的
最后下面的代码,我发现是有点我需要,但有人可以帮助我,使其强大。例如使用这些阈值/改变它们/或使用二值化、闭合(用膨胀增加白色区域,然后用侵 eclipse 去除黑色噪声),使得这些被推广用于所有。
def get_image_stats(img_path):
img = cv2.imread(img_path)
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
blurred = cv2.GaussianBlur(gray, (25, 25), 0)
no_text = gray * ((gray/blurred)>0.99) # select background only
no_text[no_text<10] = no_text[no_text>20].mean() # convert black pixels to mean value
no_bright = no_text.copy()
no_bright[no_bright>220] = no_bright[no_bright<220].mean() # disregard bright pixels
std = no_bright.std()
bright = (no_text>220).sum()
if no_text.mean()<200 and bright>8000:
return True
字符串
以下是几个例子:
x1c 0d1x的数据
的
的
的
1条答案
按热度按时间1cosmwyk1#
使用高Gamma值进行Gamma校正如何?它是像素强度的非线性变换,如OpenCV教程中关于图像强度变换here所示。在上述OpenCV链接中检查什么是gamma校正。“
我在你的图像上试过了,灰度值很高。代码如下所示。
字符串
其结果如下。成对地,顶部是伽马校正的图像,底部是伽马校正的图像上的阈值。100d 1xx 1c 1d 1x的字符串
1c 2d 1xx 1c 3d 1x的字符串
1c 4d 1xx 1c 5d 1x的字符串
如果您有最后一种类型的图像(例如,仅将范围(245-255)内的灰度值设置为前景),则可以对Gamma校正图像应用更多的手动阈值处理,以获得更好的结果。
完成后,您可以使用连通分量分析提取有关这些提取的眩光区域的统计信息。