bhe*_*ers 7 python opencv image-processing histogram
我希望在显示器上执行光学字符识别(OCR),并希望程序在不同的光照条件下工作.为此,我需要处理和阈值图像,使每个数字周围没有噪声,允许我检测数字的轮廓并从那里执行OCR.我需要使用的阈值适应这些不同的光照条件.我尝试过自适应阈值处理,但我无法让它工作.
我的图像处理很简单:加载图像(i),灰度i(g),将直方图均衡应用于g(h),并将二进制阈值应用于阈值= t的h.我已经使用了几个不同的数据集,并发现使OCR工作的最佳阈值一致地位于(h)的直方图中的最高密度范围内(没有间隙的图的唯一部分).![直方图(h). 值t = [190,220]对于OCR是最佳的](https://i.imgur.com/6QWtZNA.png)
直方图(h).值t = [190,220]对于OCR是最佳的.可以在此处找到描述我的问题的更完整的图像集:http://imgur.com/a/wRgi7
我当前的解决方案,但有点笨拙和缓慢,检查:
1. There must be 3 digits
2. The first digit must be reasonably small in size
3. There must be at least one contour recognized as a digit
4. The digit must be recognized in the digit dictionary
Run Code Online (Sandbox Code Playgroud)
除非所有案例都被接受,否则阈值将增加10(从较低值开始)并再次尝试.
我可以识别(h)直方图上的最佳阈值这一事实可能只是确认偏差,但我想知道是否有一种方法可以提取该值.这与我之前使用直方图的方式不同,后者更多的是寻找峰值/谷值.
我正在使用cv2进行图像处理,使用matplotlib.pyplot进行直方图.