我正在尝试按照本教程http://www.mathworks.com/help/vision/examples/automatically-detect-and-recognize-text-in-natural-images.html使用Matlab检测图像中的文本。
作为第一步,本教程使用detectMSERFeatures
检测图像中的文本区域。但是,当我在图像上使用此步骤时,未检测到文本区域。
以下是我正在使用的代码段:
colorImage = imread('demo.png');
I = rgb2gray(colorImage);
% Detect MSER regions.
[mserRegions] = detectMSERFeatures(I, ...
'RegionAreaRange',[200 8000],'ThresholdDelta',4);
figure
imshow(I)
hold on
plot(mserRegions, 'showPixelList', true,'showEllipses',false)
title('MSER regions')
hold off
这是原始图片
这是第一步之后的图像
[![在此处输入图像说明] [2]] [2]
更新
我玩过各种参数,但似乎没有人完全检测到文字区域。有没有比调整数字更好的方法来实现这一目标?调整参数不适用于我可能拥有的各种图像。
我尝试过的一些参数及其结果:
[mserRegions] = detectMSERFeatures(I, ...
'RegionAreaRange',[30 100],'ThresholdDelta',12);
[mserRegions] = detectMSERFeatures(I, ...
'RegionAreaRange',[30 600],'ThresholdDelta',12);
答案 0 :(得分:1)
免责声明:完全未经测试。
尝试减少MaxAreaVariation
,因为您的文字&背景变化很小(减少误报)。你应该可以把它调到很远,因为看起来文本是数字生成的(如果它是文本图片就行不通)。
尝试减少RegionAreaRange
的最小值,因为小字符可能小于200像素(增加正数)。在200,您可能会过滤掉大部分文本。
尝试增加ThresholdDelta
,因为您知道文本和背景之间存在明显的对比(减少误报)。对于过滤,这不会像MaxAreaVariation
那样有效,但应该有所帮助。