我有一個龐大的嘈雜的人們創建的圖像圖像集。我想有一些功能將它們修剪成只有繪圖。批量修剪嘈雜的圖像
下面是一些例子:
因爲噪音-trim不起作用
我還試圖用此鏈接的例子(www.imagemagick.org/用法/ crop /#trim_blur),但由於圖像內和圖像之間的噪聲水平不同,所以效果不佳。
最後,我試圖增加對比度以增加實際繪圖的線條被識別的可能性,但出於與上述類似的原因(不同的噪聲水平),它僅銳化了每幅圖像的部分線條。
如果有人有任何想法,我很樂意聽到他們!
我有一個龐大的嘈雜的人們創建的圖像圖像集。我想有一些功能將它們修剪成只有繪圖。批量修剪嘈雜的圖像
下面是一些例子:
因爲噪音-trim不起作用
我還試圖用此鏈接的例子(www.imagemagick.org/用法/ crop /#trim_blur),但由於圖像內和圖像之間的噪聲水平不同,所以效果不佳。
最後,我試圖增加對比度以增加實際繪圖的線條被識別的可能性,但出於與上述類似的原因(不同的噪聲水平),它僅銳化了每幅圖像的部分線條。
如果有人有任何想法,我很樂意聽到他們!
不知道這是否會爲您的所有圖像的工作,因爲有相當多的問題,與他們同周圍的邊緣
但您應該爲解決某些問題提供一些建議。
要消除邊緣周圍的人爲現象,可以將圖像範圍減少2。在各方的5% - 基本上是一個居中的作物,如:
convert noisy1.jpg -gravity center -extent 95x95% trimmed.png
要查看陰影/光照不均勻,我將標準化圖像的一系列堅實的黑色固體白色,你會看到影子在左下:
convert noisy1.jpg -normalize result.png
要刪除這一點,我會克隆你的形象,並在更大的區域計算低頻平均,然後減去,這樣緩慢變化的東西都去掉:
convert noisy1.jpg \(+clone -statistic mean 25x25 \) -compose difference -composite -negate result.png
這就給了這一點,那麼你可以嘗試正火它自己看到影子消失:
如果我現在應用Canny邊緣檢測到的是,我得到這個:
convert noisy1.jpg \(+clone -statistic mean 25x25 \) -compose difference -composite -normalize -negate -canny 0x1+10%+30% result.png
這是一個非常粗略的,但希望有效,小腳本做了一大堆。它不做任何參數檢查。另存爲$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
這工作很好,非常感謝!在這裏最後一步生成圖像後,我可以簡單地否定,然後修剪輸出達到我想要的最終結果。太棒了!現在我只需要將它們串在一起。 – JDW
我做了一個非常簡單的小腳本版本的整個事情,並將其添加到底部。祝你好運!請先備份。 –
感謝馬克,我稍後會給出這個答案,但現在,爲了防止其他人遇到這個帖子,並且可能會發現它很有用,我使用了這個命令,結果非常好: '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 -trim 「%I」' – JDW
通常,blur&canny的組合足以在嘈雜的圖像中隔離感興趣的區域。但是,您的兩個示例都會在圖像的最邊緣顯示有效標記(香蕉右下角和櫻桃右下角)。我們是否可以假定邊緣的所有標記都應該被忽略? – emcconville
是的,這是一個安全的假設,可以忽略邊緣周圍的標記,它們可能只是隨機標記。 – JDW