2012-07-05 26 views
3

我的想法是:如何以編程方式移除黑色格子?

  • 1.0。 [未解決,硬圖像檢測]打破正方形圖像和刪除邊界,當然還有其他技術!

  • 1.1。 [未解決] Imagemagick:裁剪(說明here),刪除 某些邊界 - 這可能需要 很多時間來定位網格,圖像檢測 問題(比較白色/黑色在這裏) - 或者可能有一些魔術魔杖樣式過濾器。

  • 1.2。 [未解決] Python:你可能需要這個from PIL import Image

Obivously,GIMP的橡皮擦是因爲它的速度慢且容易出錯的解決這個問題的錯誤的方式。你如何以編程方式刪除網格?

enter image description here

附:在Graphics.SE here中隨意討論這個問題,它包含更多的物理和機械破解。

+0

的方法,到目前爲止,如果你有相同的顏色作爲網格的非立方體形狀不工作。 – hhh 2012-07-05 18:06:50

回答

4

如果所有的圖像在一個灰色的格子組成的黑線,你可以調整白門檻刪除網格(與ImageMagick的EG):

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 
+0

+1智能主意!假設網格是紅色的,你可以移除某種顏色的網格嗎?我現在很想知道它是否會導致更好的質量圖片。 – hhh 2012-07-05 11:46:16

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() 

處理您上傳的圖片與此代碼給出:

enter image description here

在這種情況下是一個相當不錯的結果。如果您的圖形比網格暗,您應該可以使用此方法,而不會有太多問題。

+0

你能以某種方式在這裏指定顏色嗎? – hhh 2012-07-08 02:40:07

+0

@hhh - 當然,你可以很容易地做到這一點,看看[PIL文檔](http://www.pythonware.com/library/pil/handbook/index.htm)。一種方法是使用split()並將圖像分割成單獨的RGB圖像通道,然後僅在這些通道中的一個上使用上述功能。 – fraxel 2012-07-08 08:57:12

0

反饋的答案:emulbreh和飛梭

蟒蛇-version利用ImageMagick的讓我們考慮ImageMagick的。由於不同的顏色通道-profiles,它不適用於下面的彩色版本。我們來進一步調查一下。

enter image description here

enter image description here

$轉換-white閾值0%bird.png without.png

enter image description here

圖爲噪聲的原始掃描圖象的量。

困惑:移除右 - 手角落作爲一個例子

我倒顏色$ convert -negate whiteVersion.png blackVersion.png以使其更容易vizualise。現在用下面的黑色照片,我想刪除藍色的右角,即使它變成黑色 - 這意味着我想將BG通道的BG通道設置爲100,通道值爲100%。

$轉換聲道BG -threshold 100%bbird.png without.png

enter image description here

enter image description here

現在唯一剩下的東西是當然紅聲道的,我刪除了GB,不過,白還剩下紅色。現在我怎樣才能去除右手角?我需要指定區域,然後執行之前的操作。

如何在任意照片的位置使用任何照片去除某些顏色但保留一些顏色?

我不知道一個簡單的方法。第一個問題是顏色檢測問題 - 您爲顏色(R,G,B)指定了一些不等式的條件。如果條件成立,您只需將其刪除即可。現在,您可以對所有基本顏色執行此操作,即當(R,G,B)=(100%,0,0), (R,G,B)=(0,100%,0)(R,G,B)=(0,0,100%)時。那裏是否存在一些準備好的實現?也許吧,但自己動手更好,拼圖套裝!

必備知識

  • 教程herehere關於ImageMagick的。

  • 爲了理解這個話題,我們需要知道一些基本的物理學:白色是所有顏色的混合物,黑色是沒有顏色的。

+1

轉換到不同的色彩空間,例如'HSV'將使這些東西更容易爲你所用,'PIL'可以讓你做到這一點。 – fraxel 2012-07-08 13:46:02

+0

@fraxel:我在ImageMagick中找到關於HSV的教程[http://www.imagemagick.org/script/color.php](尚未找到如何使用hsb(v1,v2,v3) - 需要一些選項,並且無法找到關於HSV的python PIL文檔),調查。想法在哪裏可以找到有關HBS/HSV的API? – hhh 2012-07-08 22:19:07

+0

道歉,我想你可以,但你不能用'PIL'轉換成'HSV',我通常使用['opencv'](http://opencv.willowgarage.com/wiki/)。然而[這篇文章](http://stackoverflow.com/questions/7274221/changing-image-hue-with-python-pil)可能會幫助.. – fraxel 2012-07-09 07:46:52

相關問題