某メガネ屋さんの店頭に下のようなポスターが貼ってあり「89に見えますか?52に見えますか?」と書かれてありました。色覚異常検査のことですね。色覚に異常の無い多くの読者の皆さんは「89」に見えることでしょう。少し興味があったのでImagemagickで画像処理してみました。
まずRGB値に分解して、赤だけをとりだしてみたところ、下のようになりました。明度の低い部分がより鮮やかに「89」と読めることでしょう。
一方で青のみをとりだしてみたところ、下のようになりました。明度の低い点描のなかに明度の高い「52」の文字が浮き出ていることと思います。
#!/bin/bash # 元画像はA-0.jpg thema="色覚" temp=`mktemp ./XXXX.tmp` # JPG形式を平テキストに変換し、データベース登録 convert A-0.jpg txt: |\ awk -F"[,:)]" 'NR>1{print $1,$2,$3,$4,$5}' |\ sed -e "s/(//g" |\ awk '{print $1,$2,$3,$4,$5}' > rgb.txt mysql image << _SQL_ drop table if exists ${thema}; create table ${thema}( x int, y int, r int, g int, b int ); load data local infile "rgb.txt" into table ${thema} fields terminated by " "(x,y,r,g,b); _SQL_ # XY方向それぞれの画素数を取得 nx=`mysql image -N <<_SQL_ select max(x)-min(x)+1 from ${thema}; _SQL_` ny=`mysql image -N <<_SQL_ select max(y)-min(y)+1 from ${thema}; _SQL_` # CONVERTコマンドで使用可能なテキストファイルに変換 for color in red green blue do printf "# ImageMagick pixel enumeration: %d,%d,255,srgb\n" $nx $ny > ${color}.txt case ${color} in red) mysql image -N <<_SQL_ > $temp select x,y,r,0,0 from ${thema} order by x,y; _SQL_ ;; green) mysql image -N <<_SQL_ > $temp select x,y,0,g,0 from ${thema} order by x,y; _SQL_ ;; blue) mysql image -N <<_SQL_ > $temp select x,y,0,0,floor(b*0.5) from ${thema} order by x,y; _SQL_ ;; esac cat $temp |\ awk '{printf "%3d,%3d: (%3d,%3d,%3d)\n",$1,$2,$3,$4,$5}' \ >> ${color}.txt convert -crop x280 ${color}.txt ${color}.jpg done rm $temp