如何在 MatLab 或 photoshop 中使扫描图像的白色部分变白并使黑色部分变黑

how to whiten the white parts and blacken the black parts of a scanned image in MatLab or photoshop

我有一张扫描图像,是从打印的 word (docx) 文件扫描而来的。我希望扫描的图像看起来像原始的 word 文件,即去除噪音和增强。即在不改变文件彩色部分的情况下,将白色部分完全变白,将黑色部分完全变黑enter image description here

您可以通过多种方式来解决这个问题。最简单的方法是应用一个色阶滤镜,黑点升高一点,白点降低一点。这可以对所有 3 个颜色通道或有选择地对一个子集完成。由于您要创建纯黑色和白色并且图像上没有色偏,因此我将对所有 3 个颜色通道应用相同的设置。它是这样工作的:

destVal = (srcVal - blackPt) + srcVal / (whitePt - blackPt);

这会略微改变图像的彩色部分,可能会导致它们略微或多或少地饱和。

我在照片编辑应用程序中尝试过此方法,但对结果感到失望。通过将白点降低到大约 66%,我能够消除大部分噪音。然而,左上角的标志太细了,最后也变成了白色。黑点其实不需要移动

我认为您将很难使用该徽标。不过,您可以将它与其他更改隔离开来,这可能会有所帮助。它周围的一个简单的圆形区域,您只需忽略任何处理就可以解决问题。

但我开始思考 - 这是用 Word 制作的。你有Word的副本吗?将几乎相同的布局放在一起可能不会太困难。它仍然对徽标没有帮助。但您可以做的是将文本布局相同,并将其导出为 PDF 或其他图像格式。 (或者如果你能找到原始模板,直接使用它。)然后你可以编写一些代码来处理你的扫描副本,无论像素是灰度(红色=绿色=蓝色),使用你制作的版本中的相应像素,否则使用扫描的像素。这会让你得到所有的印章和签名,同时让文字漂亮而清晰。也许您甚至可以在网上找到该组织的徽标。事实上,维基百科甚至有一个copy of their logo

您可能需要为灰度设置某种阈值,因为某些像素可能很接近但有轻微的色偏。一种选择可能是这样的:

if ((fabs(red - green) < threshold) && (fabs(red - blue) < threshold))
{
    destVal = recreationVal; // The output is the same as the copy you made manually
}
else
{
    destVal = scannedVal; // The output is the same as the scan
}

您可能会发现这会削弱一些彩色标记,因此您可以对输出进行第二次传递,其中与彩色像素相邻的任何像素都会从原始扫描中引入相应的像素。