如何将带有文本的图像二值化? [MATLAB]
How can I binarize images with text? [MATLAB]
我对二值化方法有疑问。
我有带文字的图像,我想将其二值化。
我希望文本最终变成白色,但有些图像的文本比背景暗,有些图像的文本比背景暗。
我想像这样二值化图像,但我希望二值化图像中的文本为白色。
顺便说一句,我正在用这段代码对图像进行二值化处理。此代码适用于文本比背景暗的图像,但不适用于比背景暗的文本。我想我需要一种方法来知道文本是否比背景更暗或更暗,以便反转或不反转二值化。
umb = graythresh(originalImage);
binaryImage =(~im2bw(originalImage,umb));
我该怎么做?
非常感谢您的帮助
我想到了 2 种可能的解决方案:
解决方案1:
使用 rgb2gray 函数生成灰度图像。
从灰度图像生成直方图,忽略透明像素。你可以使用 imhist 函数。
检查直方图的最大值是多少。如果该值很高 - 背景可能很亮,文本应该比背景暗。在这种情况下 - 获取负像(例如,通过使用补码),然后将其二值化。否则 - 你可以按原样对其进行二值化。
方案二:
解决方案断言图像足够简单,即除了字母之外没有很多连接的组件。
- 将输入图像二值化。
- 使用 bwconncomp 函数将图像分成连接的组件。
- 为每个连接的组件找到它的代表值,它可以是 0 或 1
- 检查最常见的代表值是什么。如果是 1 - 字母是深色的。在这种情况下,取负面图像而不是二值化。否则 - 按原样对输入图像进行二值化。
祝你好运!
我对二值化方法有疑问。
我有带文字的图像,我想将其二值化。
我希望文本最终变成白色,但有些图像的文本比背景暗,有些图像的文本比背景暗。
我想像这样二值化图像,但我希望二值化图像中的文本为白色。
顺便说一句,我正在用这段代码对图像进行二值化处理。此代码适用于文本比背景暗的图像,但不适用于比背景暗的文本。我想我需要一种方法来知道文本是否比背景更暗或更暗,以便反转或不反转二值化。
umb = graythresh(originalImage);
binaryImage =(~im2bw(originalImage,umb));
我该怎么做?
非常感谢您的帮助
我想到了 2 种可能的解决方案:
解决方案1:
使用 rgb2gray 函数生成灰度图像。
从灰度图像生成直方图,忽略透明像素。你可以使用 imhist 函数。
检查直方图的最大值是多少。如果该值很高 - 背景可能很亮,文本应该比背景暗。在这种情况下 - 获取负像(例如,通过使用补码),然后将其二值化。否则 - 你可以按原样对其进行二值化。
方案二:
解决方案断言图像足够简单,即除了字母之外没有很多连接的组件。
- 将输入图像二值化。
- 使用 bwconncomp 函数将图像分成连接的组件。
- 为每个连接的组件找到它的代表值,它可以是 0 或 1
- 检查最常见的代表值是什么。如果是 1 - 字母是深色的。在这种情况下,取负面图像而不是二值化。否则 - 按原样对输入图像进行二值化。
祝你好运!