如何用文本二值化图像? [MATLAB]

时间:2016-02-29 12:28:57

标签: image matlab binaryfiles

我遇到了二值化方法的问题。 我有文字的图像,我想要二值化。 我希望文本最终变成白色,但是文本中的图像比背景更暗,并且文本中的图像比背景更暗。 enter image description here enter image description here

我想将这些图像二值化,但我希望二值化图像中的文本为白色。

顺便说一句,我正在使用此代码对图像进行二值化。此代码适用于文本比背景暗的图像,但对于不比背景暗的文本不好。我想我需要一种方法来知道文本是否比背景更暗或更暗,以便反转或不反转二值化。

        umb = graythresh(originalImage);
        binaryImage =(~im2bw(originalImage,umb));

我该怎么做?

非常感谢您的帮助

1 个答案:

答案 0 :(得分:1)

我想到了两种可能的解决方案:

<强>解决方法1:

  1. 使用rgb2gray函数生成灰度图像。

  2. 从灰度图像生成直方图,并忽略透明像素。你可以使用imhist功能。

  3. 检查直方图最大值是多少。如果值很高 - 背景可能很浅,文本应该比背景更暗。在这种情况下 - 拍摄负片图像(例如,通过使用imcomplement),然后将其二值化。否则 - 你可以按原样进行二值化。

  4. 解决方案2:

    解决方案声称图像足够简单,即除了字母之外没有很多连接组件。

    1. 二进制化输入图像。
    2. 使用bwconncomp函数将图像划分为连接的组件。
    3. 对于每个连接的组件,找到它的代表值,它可以是0或1
    4. 检查什么是最常见的represantative值。如果它是1 - 字母是黑暗的。在这种情况下,采取负面图像,而不是二值化。否则 - 按原样二进制化输入图像。
    5. 祝你好运!