2017-04-12 377 views
0

我有一個龐大的嘈雜的人們創建的圖像圖像集。我想有一些功能將它們修剪成只有繪圖。批量修剪嘈雜的圖像

下面是一些例子:

banana cherry

因爲噪音-trim不起作用

我還試圖用此鏈接的例子(www.imagemagick.org/用法/ crop /#trim_blur),但由於圖像內和圖像之間的噪聲水平不同,所以效果不佳。

最後,我試圖增加對比度以增加實際繪圖的線條被識別的可能性,但出於與上述類似的原因(不同的噪聲水平),它僅銳化了每幅圖像的部分線條。

如果有人有任何想法,我很樂意聽到他們!

+0

通常,blur&canny的組合足以在嘈雜的圖像中隔離感興趣的區域。但是,您的兩個示例都會在圖像的最邊緣顯示有效標記(香蕉右下角和櫻桃右下角)。我們是否可以假定邊緣的所有標記都應該被忽略? – emcconville

+0

是的,這是一個安全的假設,可以忽略邊緣周圍的標記,它們可能只是隨機標記。 – JDW

回答

0

不知道這是否會爲您的所有圖像的工作,因爲有相當多的問題,與他們同周圍的邊緣

  • 文物
  • 光照不均勻,或陰影
  • 噪音
  • 低對比度

但您應該爲解決某些問題提供一些建議。


要消除邊緣周圍的人爲現象,可以將圖像範圍減少2。在各方的5% - 基本上是一個居中的作物,如:

convert noisy1.jpg -gravity center -extent 95x95% trimmed.png 

enter image description here


要查看陰影/光照不均勻,我將標準化圖像的一系列堅實的黑色固體白色,你會看到影子在左下:

convert noisy1.jpg -normalize result.png 

enter image description here

要刪除這一點,我會克隆你的形象,並在更大的區域計算低頻平均,然後減去,這樣緩慢變化的東西都去掉:

convert noisy1.jpg \(+clone -statistic mean 25x25 \) -compose difference -composite -negate result.png 

這就給了這一點,那麼你可以嘗試正火它自己看到影子消失:

enter image description here


如果我現在應用Canny邊緣檢測到的是,我得到這個:

convert noisy1.jpg \(+clone -statistic mean 25x25 \) -compose difference -composite -normalize -negate -canny 0x1+10%+30% result.png 

enter image description here


這是一個非常粗略的,但希望有效,小腳本做了一大堆。它不做任何參數檢查。另存爲$HOME/cropper

#!/bin/bash 
src=$1 
dst=cropped-$1 
tmp="tmp-$$.mpc" 
trimbox=$(convert "$1" -extent 95x95% -write "$tmp" \(+clone -statistic mean 25x25 \) -compose difference -composite -normalize -negate -canny 0x1+10%+30% -format %@ info:) 

convert "$tmp" -crop $trimbox "$dst" 
rm tmp-$$.* 

使腳本可執行文件:

chmod +x $HOME/cropper 

而且像這樣的單一圖像運行:

cd /path/to/some/images 
$HOME/cropper OneImage.jpg 

如果您有數百張照片,我會做一個備份第一,然後全部與並行執行GNU並行

parallel $HOME/cropper {} ::: *.jpg 
+0

這工作很好,非常感謝!在這裏最後一步生成圖像後,我可以簡單地否定,然後修剪輸出達到我想要的最終結果。太棒了!現在我只需要將它們串在一起。 – JDW

+0

我做了一個非常簡單的小腳本版本的整個事情,並將其添加到底部。祝你好運!請先備份。 –

+0

感謝馬克,我稍後會給出這個答案,但現在,爲了防止其他人遇到這個帖子,並且可能會發現它很有用,我使用了這個命令,結果非常好: 'for%i in (*。jpg)magick convert「%i」-resize 10x10%-gravity center -extent 95x95%(+ clone -statistic mean 25x25)-compose difference -composite -normalize -negate -canny 0x1 + 10%+ 30%-negate -t​​rim 「%I」' – JDW