簡體   English   中英

有:包含多個圖像的圖像文件; 想要:提取、保存每張圖片

[英]Have: Image file with multiple images; Want: to extract, save each image

我有一本剪貼畫冊的掃描件; 每一頁都被掃描成 tiff; 每個 tiff 大約有 18-20 張剪貼畫圖像——我將如何自動選擇和提取這 18-20 張圖像中的每一張,保留顏色深度/ppi,並將每個剪貼畫圖像保存為自己的圖像文件。

鏈接到我正在描述的版本——理想情況下會采用示例圖像並將文件中的每個剪貼畫圖像轉儲到單獨的文件中。 理想情況下,將以最少的用戶交互處理圖像/目錄。 很高興使用命令行、圖形用戶界面等等……macOS、Linux、Windows 都很好。

感謝您提供有關如何處理的任何想法-

可能沒有考慮到這一點——想知道 Photoshop 動作或 Google Cloud Vision 過程是否可行……想到了 tensorflow……或某種方法來識別頁面/文件中的圖像邊界,使用坐標踢出每個剪貼畫圖像,但在開始時就停滯了. 當然這是 CV 庫中的東西,我想我只是缺乏庫/模塊/現有工具和詞匯的知識來開始。 找不到任何與 imagemagick 相關的內容。 不想手動選擇/復制/粘貼每一頁。

在 Imagemagick 中,您可以使用連通分量處理來做到這一點。 但這非常依賴於獲得一個良好的閾值來將您的對象與背景分開。 請注意,jpg 不是一種好的格式。 背景顏色不均勻並且有壓縮偽影,尤其是在物體附近

在此處輸入圖像描述

我所做的是:

  • 轉換為灰色和閾值並取反,這樣對象在黑色背景上是白色的。

  • 然后我對二值圖像進行連接組件處理,將面積小於 5000 像素的對象合並到周圍環境中。 這有助於減少孔洞並剔除因噪音和壓縮而產生的較小物體。 然后,我為找到的所有 object 保存邊界框和質心。

  • 然后,我對找到的每個 object 執行一個 for 循環。 我檢索邊界框並裁剪輸入的原始圖像並保存。

  • 我還使用洪水填充和 +opaque 使二進制圖像中的主要 object 變黑和 object 變白。

  • 我在同一個邊界框處裁剪處理過的二值圖像並將其放入 alpha 通道。

  • 然后我將圖像展平為白色,使背景變為白色並保存蒙版結果。


cd
cd desktop/clipart_separate
OLDIFS=$IFS
IFS=$'\n'
dataArr=(`convert clipart.jpeg \
-colorspace gray \
-threshold 73% \
-negate \
-type bilevel \
-define connected-components:verbose=true \
-define connected-components:mean-color=true \
-define connected-components:area-threshold=5000 \
-connected-components 8 tmp.png | \
grep "gray(255)" | awk '{print $2, $3}'`)
num=${#dataArr[*]}
for ((i=0; i<num; i++)); do
bbox=`echo ${dataArr[$i]} | cut -d\  -f1`
centroid=`echo ${dataArr[$i]} | cut -d\  -f2`
convert clipart.jpeg -crop $bbox +repage clipart_$i.jpg
convert -quiet clipart_$i.jpg \
\( tmp.png -fill red -draw "color $centroid floodfill" -alpha off \
-crop $bbox +repage \
-fill black +opaque red -fill white +opaque black \) \
-alpha off -compose copy_opacity -composite \
-compose over -background white -flatten \
clipart_masked_$i.jpg
done
IFS=$OLDIFS

結果文件

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM