5

我的想法是:

  • 1.0。[未解决,硬图像检测]将图像分成正方形并去除边框,当然还有其他技术!

  • 1.1。[未解决] Imagemagick:裁剪(此处为说明),删除某些边框-这可能需要很多时间来定位网格,图像检测问题(此处比较白色/黑色)-或者可能有一些魔杖样式的过滤器。

  • 1.2. [未解决] Python:你可能需要这个from PIL import Image.

显然,Gimp 的橡皮擦是解决此问题的错误方法,因为它速度慢且容易出错。您将如何以编程方式删除网格?

在此处输入图像描述

Ps 在 Graphics.SE 中关于这个问题的休闲讨论在这里包含更多的物理和机械黑客。

4

3 回答 3

4

如果所有图像都由灰色网格上的黑线组成,您可以调整白色阈值以移除网格(例如使用 ImageMagick):

convert -white-threshold 80% with-grid.png without-grid.png

您可能必须尝试使用​​确切的阈值。80% 使用您的示例图像为我工作。这将使线条像素化。但也许重新采样可以将其减少到可接受的数量,例如:

convert -resize 200% -white-threshold 80% -resize 50% with-grid.png without-grid.png
于 2012-07-05T11:33:36.997 回答
3

在您的图像中,网格比绘图要轻一些,因此我们可以设置一个阈值,并过滤图像,使所有“亮”像素都设置为白色。使用PIL它可能看起来像这样:

import Image

def filter(x):
    #200 is our cutoff, try adjusting it to see the difference.
    if x > 200:
        return 255
    return x

im = Image.open('bird.png')
im = im.point(filter)
im.show()

使用此代码处理您上传的图像会给出:

在此处输入图像描述

在这种情况下,这是一个很好的结果。如果您的绘图比网格更暗,您应该能够使用此方法而不会出现太多问题。

于 2012-07-05T11:31:52.557 回答
0

对答案的反馈:emulbreh 和 fraxel

python 版本使用 ImageMagick,所以让我们考虑 ImageMagick。由于不同的颜色通道配置文件,它不适用于如下彩色版本。让我们进一步研究一下。

在此处输入图像描述

在此处输入图像描述

$ convert -white-threshold 0% bird.png without.png

在此处输入图像描述

这张图片显示了原始扫描图片中的噪声量。

谜题:以去掉右上角为例

我颠倒了颜色$ convert -negate whiteVersion.png blackVersion.png以使其更容易可视化。现在使用下面的黑色照片,我想删除蓝色的右上角,即使其变黑——这意味着我想将 BG 通道设置为 BG 的 0 和 100% 通道值。

$ convert -channel BG -threshold 100% bbird.png without.png

在此处输入图像描述

在此处输入图像描述

现在唯一剩下的当然是红色通道,我删除了 GB,但白色仍然剩下红色。现在我怎样才能只删除右手角?我需要指定区域,然后执行较早的操作。

我怎样才能让这个与任意照片一起工作,你想删除某些颜色但保留一些颜色完整?

我不知道一个简单的方法。第一个问题是颜色检测问题——你为颜色(R、G、B)指定了一些不等式的条件。如果条件为真,则仅在部分中删除它。现在您对所有基本颜色执行此操作,即 when(R,G,B)=(100%,0,0), (R,G,B)=(0,100%,0)(R,G,B)=(0,0,100%). 是否存在一些现成的实现?可能,但自己做会更好,拼图!

必备知识

  • 关于 Imagemagick 的教程在这里这里。

  • 为了理解这个话题,我们需要了解一些基本的物理学:白色是所有颜色的混合,黑色是没有颜色的。

于 2012-07-08T03:32:58.603 回答