【发布时间】:2011-07-11 16:48:28
【问题描述】:
我正在寻找清理文档图片的代码,这意味着去除阴影和其他噪音并将其转换为简单的黑白图像(黑色 - 文字,白色 - 背景)。
也许一个简单的像素算法会有所帮助,例如:将图像划分为矩形,每个矩形定义最常见的比例作为背景,将较暗的像素定义为实际的书写线。
我们将不胜感激。
【问题讨论】:
我正在寻找清理文档图片的代码,这意味着去除阴影和其他噪音并将其转换为简单的黑白图像(黑色 - 文字,白色 - 背景)。
也许一个简单的像素算法会有所帮助,例如:将图像划分为矩形,每个矩形定义最常见的比例作为背景,将较暗的像素定义为实际的书写线。
我们将不胜感激。
【问题讨论】:
问题是代码在字母和阴影之间没有区别。无论上下文如何,每个暗像素都是黑色的。
所需的结果应该过滤掉诸如阴影之类的噪音,变成清晰的黑白图像。
【讨论】:
get the pixel data using this question
要将每个像素变成黑色和白色,将红色绿色和蓝色分量相加,然后除以 3。然后将结果值分配给每个像素。现在要消除噪声,您可以设置一个要考虑噪声的阈值,例如,您可以说任何高于 200 的像素,将它们变为白色(设置为 255)并将像素变暗设置为黑色(0)
// turn to black and white
red = pixelData[index + 0];
green = pixelData[index + 1];
blue = pixelData[index + 2];
int combinedValue = (red + blue + green)/3;
// filter out noise
if(combinedValue >200)
{
combinedValue = 255;
}
else
{
combinedValue =0;
}
// set pixels to new value
pixelData[index + 0] = combinedValue;
pixelData[index + 1] = combinedValue;
pixelData[index + 2] = combinedValue;
【讨论】: