Image 如何在图像处理中增加像素强度差?

Image 如何在图像处理中增加像素强度差?,image,opencv,image-processing,Image,Opencv,Image Processing,我有一个如附图所示的图像。 有时,数字的黑色强度与相邻像素相差不大,我提取这些数字时遇到问题(例如,设置阈值是无效的,因为黑色强度接近灰色强度,这是因为在图像捕获过程中反射或聚焦不好)。我喜欢在黑色和背景灰色之间做更多的区别,这样我就可以在没有太多噪声的情况下提取数字。我要做的是使用OpenCV中的addWeighted函数增加差异颜色是原始RGB图像。这对我的处理有意义吗?还是有更有效的方法 Mat blur_img = new Mat(color.size(), color.type());

我有一个如附图所示的图像。 有时,数字的黑色强度与相邻像素相差不大,我提取这些数字时遇到问题(例如,设置阈值是无效的,因为黑色强度接近灰色强度,这是因为在图像捕获过程中反射或聚焦不好)。我喜欢在黑色和背景灰色之间做更多的区别,这样我就可以在没有太多噪声的情况下提取数字。我要做的是使用
OpenCV
中的
addWeighted
函数增加差异<代码>颜色是原始RGB图像。这对我的处理有意义吗?还是有更有效的方法

Mat blur_img = new Mat(color.size(), color.type());
org.opencv.core.Size size = new Size(9,9);
Imgproc.GaussianBlur(color, blur_img, size, 2);
Mat sharpened = new Mat(color.size(), CvType.CV_32FC3);
Core.addWeighted(color, 1.5, blur_img, -0.5, 0, sharpened);

您需要进行局部阈值处理(bernsen、sauvola、local otsu等),opencv还碰巧具有
adaptiveThreshold
功能。这里有一个例子。只需确保使用参数即可

自适应阈值

伯恩森

代码

#包括
使用名称空间cv;
Mat thresh_bernsen(Mat&gray、int-ksize、int-contrast_limit)
{
Mat ret=Mat::零(gray.size(),gray.type());

对于(int i=0;i简单阈值不考虑图像中的光照变化,自适应阈值不利用连接区域


像这样的片段提取的当前领导者是MSER。它遍历所有可能的阈值并找到连接的最稳定区域(跨越所有阈值)。不要重新发明自行车,使用经验证的最佳功能和开放源码,例如存在更多的堆栈溢出。

编辑:根据Vlad的评论,我在OpenCV的3.0开发分支上找到了以下链接:。 这似乎是使用Vlad提到的原始MSER算法检测关键点的改进来检测文本的技术。似乎OpenCV很快就会拥有它。该技术的详细信息在上面链接中找到的两篇论文中进行了描述。感谢Vlad

如果在使用Zaw提到的算法对图像进行阈值设置之前使用非局部均值去噪对图像进行过滤,则可以减少一些噪声:

fastNlMeansDenoising(gray, gray, 3, 5, 15);
上述Zaw所述的自适应阈值(使用相同的参数):

Zaw描述的Bernsen阈值(使用相同参数):


调整阈值和去噪的参数可能会给你带来更好的结果。

看起来很好。你也可以考虑使用。我觉得不太可靠,一些捕获的图像效果不错。但是对一些人来说,它不太好。伯恩森有更好的效果,但是它非常慢,特别是对于我的移动应用程序。需要一些加速:(.也许某个地方有一个霓虹灯实现…如果失败,你可以尝试imagej。它实现了一系列局部阈值方法。也许其中一种方法对你来说足够快和好。你也可以尝试调整自适应阈值的参数,比如在自适应阈值之前增加图像的块大小或中值模糊。或者u可以在传递给bernsen之前缩小图像大小(对于较小的图像,需要减小ksize)让它更快。但是OpenCV for MSER中的代码不是用于检测关键点的吗?您可能还可以提供参考文章/代码来说明如何在这种情况下使用它来执行分段,因为您提供的是用于检测关键点的,而不是分段本身,并且不清楚如何进行修改。我认为是这样的'我很有兴趣看一看。谢谢。这是用来检测CC(连接组件)等区域的但是更稳定。按照上面的链接查找代码,这些是我能找到的最好的代码。MSER现在广泛用于文本检测。另请参见样本src.MSER的c文件夹中的MSER_sample.cpp。MSER可能无法处理不均匀照明…vlfeat也有MSER实现,我认为它们会给出不同的结果(vlfeat似乎更好)…不妨两种都试试
fastNlMeansDenoising(gray, gray, 3, 5, 15);