ugnagブログ

たいした内容はありません。思いつきで書いているだけ。
開発日記がメインかな。

<< 自炊のまとめ(中間報告) | main | 自炊作業が進まない!! >>

自炊で使いそうなImageMagickコマンド

タイトル通り。
自炊の際には、スキャン後に画像処理が必須だが、

それにはImageMagickを使うのが便利だ。


ただ、ImageMagickは膨大なコマンドがあり、

探すのだけでも一苦労。



そこで、よく使いそうなコマンドだけをメモ代わりに記述しておく。





●画像の回転(時計回り)

convert -rotate 30 tm931028b1.jpg tm931028b1_rotate.jpg

※反時計回りにするときは、360から減算する
※小数点も使えるようだ



●画像の2値化

convert -threshold 120 tm931028b1.jpg tm931028b1_thresh.jpg

※輝度値120以上の場合には白、120未満の場合には黒へ変換される。

※コントラスト☓4の処理後、しきい値を53000〜60000程度にすると、きれいになるようだ。

※しきい値を上げると黒っぽく、下げると白っぽくなる



※しきい値は、直接値は推奨されていない。
「ImageMagickの特定のビルドの量子深度のもの」
※推奨されているのはパーセント指定

convert -threshold 75% src.png dst.png

※パーセント値は、次のように算出できる。

1.ヒストグラムを取得

convert src.png -format %c histogram:info: histogram.txt

----- histogram.txt -----
7: ( 0, 0, 0) #000000 gray(0,0,0)
11: ( 1, 1, 1) #010101 gray(1,1,1)
8: ( 2, 2, 2) #020202 gray(2,2,2)
6: ( 3, 3, 3) #030303 gray(3,3,3)

.
.
.
1: (250,250,250) #FAFAFA gray(250,250,250)
1: (253,253,253) #FDFDFD gray(253,253,253)
1: (255,255,255) #FFFFFF gray(255,255,255)
-------------------------
コロンまでが集計値。
2行目では、
「階調度1のピクセルは11箇所」
最後の行では、
「階調度255のピクセルは1箇所」
という意味になる。
ただし、集計値が0の階調度は出力されていない。

threshold のパーセントで指定する値は、

階調度 ÷ 255 ☓ 100 以下を黒くする。

例えば、

階調度 185 → 72.549・・・ (185 ÷ 255 × 100)
階調度 186 → 72.941・・・ (186 ÷ 255 × 100)

となるが

threshold 72.6%とすると、階調度0から185までが黒くなる。

また、

階調度 203 → 79.607・・・
階調度 204 → 80
階調度 205 → 80.392・・・

だが、threshold 80%とすると、階調度0から204までが黒くなる。



●画像の一部を切り抜く

convert input.png -crop '30x40+10+20' output.png

座標(10, 20)から30×40ピクセル切り抜く


(2017/07/04 追加)
※画像の状態によって、座標軸がおかしなことになるので、+repageオプションも一緒に使うこと。

convert input.png +repage -crop '30x40+10+20' output.png




●サイズ変更


convert -resize 250x before.png after.png

※横だけを指定すると、縦横比を維持



●標準入力(2017/06/22 追加)

convert - -resize 600x gif:- > image.gif
標準入力から読み込み、リサイズし、変換結果をgif形式で標準出力へ送り、それをimage.gofという名前のファイルに保存


●標準出力

convert from_file.png gif:- > image.gif

変換結果をgif形式で標準出力へ送り、それをimage.gofという名前のファイルに保存


convert from_file.png gif:- > /dev/null

変換結果を破棄(linuxの場合)



●裏写り、紙焼けを削除

convert -channel Red -separate -modulate 110 +contrast 変更前画像.jpg 変更後画像.jpg


-modulate l,s,h
l:輝度(Lightness)
s:⁠彩度(Saturation)
h:⁠色相(Hue)

を%で指定する

※コントラスト調整と2値化でも、なんとかなりそう



●サムネイル

convert -thumbnail 200x150 in_file out_file




※変換元がjpgの場合、defineを付けることで高速化するとのこと

※-thumbnailと-resizeの違いは、よくわからない

※-thumbnailと-resizeをそれぞれdefineを付けた時と付けないときで計測したが、

結果

#-resize のみ
#86s

#define あり
# 35s


#thumbnailオプション
# 58s

#thumbnail + defineオプション
#35s

#thumbnail + defineオプション > /dev/null
#32s








●コントラスト(古い文庫本など、黄色がかった時に、コントラストを3回程度上げると白くなる)
convert -contrast -contrast src.png dst.png

コントラストを2回分上げる



convert +contrast +contrast src.png dst.png

コントラストを2回分下げる



●明るさ

-modulate 100

明るさをそのまま


-modulate 110

明るさ10%アップ


-modulate 80

明るさ20%ダウン




●png圧縮
convert -quality 90 src.png dst.png

※pngでは、10の桁が圧縮率、1の桁がフィルター。90が最高圧縮の模様



●jpg圧縮
convert -quality 90 src.png dst.jpg

※jpgの品質は90以上で元と遜色なくなる模様。

※モノクロの場合、jpgはpngよりファイルサイズが大きくなる。


●自動傾き補正

convert.exe -deskew 40% in.jpg out.jpg


(2017/07/04 追加)
余白が発生するため、一緒にトリミングも行うとよい。

convert -deskew 40% +repage -trim in.jpg out.jpg



●画像に四角形を描く

convert -stroke cyan -fill #CC0000”-draw 'rectangle 50,60 80,100' -stroke white -draw "line 320,0 320,479" src.png dst.png

塗るつぶしをしない場合には、

-fill none

とする。

連続で指定することで、複数の描画も可能。





●グレイスケール化

convert img.png -type GrayScale img_gray.png



・[小説用]傾きを反時計回りに0.5度、コントラスト☓4、2値化(しきい値56000)、png圧縮

convert -rotate 359.5 -contrast -contrast -contrast -contrast -threshold 56000 -quality 90 src.png aaa.png


・[小説用]jpgで作成された小説をpngへ変換
convert -threshold 56000 -quality 90 src.jpg aaa.png




・[コミック用]明るさを10%アップ、グレースケール化、jpg圧縮
convert -modulate 110 -type GrayScale -quality 85 src.png aaa.jpg




●画像のカラータイプを標準出力へ

convert -format "%[type]" 02_007.jpg info:-


カラー:TrueColor
グレースケール:Grayscale
モノクロ:Bilevel


タイプと幅、高さを出力

convert -format "%[type],%w,%h" 02_007.jpg info:-

>Grayscale,1516,2160







とりあえず、こんなところだろうか。



他に使えそうなコマンドを見つけたら、更新しておきます。
パソコン(その他) | comments (0) | -

Comments

Comment Form

本文に書いて下さい
本文にh抜きで書いて下さい