我的想法是:
1.0。 [未解决,硬图像检测] 将图像分解为正方形并删除边框,当然还有其他技术!
1.1。 [未解决] Imagemagick:crop(说明here),删除 某些边界 - 这可能需要一个 很多时候定位网格,图像检测 问题(比较白/黑) - 或者可能有一些魔棒样式过滤器。
1.2。 [未解决] Python:你可能需要这个
from PIL import Image
。
很明显,Gimp的橡皮擦是解决这个问题的错误方法,因为它很慢且容易出错。你会如何以编程方式删除网格?
P.S。在Graphics.SE here中有关此问题的随意讨论,其中包含更多物理和机械攻击。
答案 0 :(得分: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
答案 1 :(得分:2)
在图像中,网格比绘图稍微亮一些,因此我们可以设置阈值,并过滤图像,使所有“光”像素都设置为白色。使用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()
使用此代码处理上传的图片会显示:
在这种情况下,这是一个非常好的结果。如果您的绘图比网格更暗,您应该能够使用此方法而不会出现太多问题。
答案 2 :(得分:0)
对答案的反馈:emulbreh和fraxel
python -version使用ImageMagick所以让我们考虑一下ImageMagick。由于颜色通道不同,它不适用于下面的彩色版本。让我们进一步研究一下。
$ convert -white-threshold 0%bird.png without.png
此图显示原始扫描图片中的噪点量。
拼图:删除右手角作为示例
我反转了颜色
$ convert -negate whiteVersion.png blackVersion.png
,以便更容易进行虚拟化。现在有了下面的黑色照片,我想删除蓝色的右角,即将其变为黑色 - 这意味着我想将BG通道设置为0的BG,通道值为100%。$ convert -channel BG -threshold 100%bbird.png without.png
现在剩下的唯一的东西当然是Red -channel,我删除了GB但白色仍然留有红色。现在我该如何删除右手角?我需要指定区域然后执行早期操作。
如何使用任意照片处理您想要删除某些颜色但保留一些颜色的颜色?
我不知道一个简单的方法。第一个问题是颜色检测问题 - 您为颜色(R,G,B)指定了一些不等式的条件。如果条件为真,则仅在零件中将其删除。现在,您对所有基本颜色执行此操作,即
(R,G,B)=(100%,0,0), (R,G,B)=(0,100%,0)
和(R,G,B)=(0,0,100%)
时。是否存在一些现成的实现?可能但是你自己做得更好,拼图!
必备知识