ラベル 輪郭抽出 の投稿を表示しています。 すべての投稿を表示
ラベル 輪郭抽出 の投稿を表示しています。 すべての投稿を表示

2013年12月19日木曜日

大人の水彩画塗り絵のように加工する件。

前回のつづきとして、
水彩塗り絵っぽくする画像処理を考えます。
水彩塗り絵っぽくとは具体的に言うと、
・縁取りがしてある
・色が全体的に薄い
・色数が少ない
だいたい、こんなとこでしょう。
ただし、『水彩独特の筆のタッチ』とかは考慮しません。
それは、GUIアプリならば考慮できますが、自動ではなかな難しそうです。
機会があったらやってみますが。。。

ということで、縁取りは前回もやったので、
今回は、
(1)色を薄くする
(2)色数を少なくする
ということをしてみます。

具体的には、どうすればいいんでしょうね。。
ちなみに、何も参考にせずにこれを書いてるわけですが、
色は、とりあえずRGBで考えるとすると、
FF0000なんていうのは、真っ赤になっちゃいますから、
これを、FF8080あたりになるようなロジックです。
じゃぁどうするかというと、とりあえず、RGBそれぞれの成分に関して、、

0x20~0x50程度を足す。
1.2倍~2倍程度の倍率をかける。
0xffを超えるものは、0xffで頭打ちにする。

っとまぁ、この程度のことしてみた結果が以下です。
でも、まぁ、この程度でも結構いけます。
問題は、その
パラメータをヒストグラムあたりみて、自動的に設定する
ロジックですねーー。

【元画像】


【変換画像】



【SRC。こんな程度。】
RR = ((RR + 0x30) * 4)/3; if(RR > 0xff) RR = 0xff;
GG = ((GG + 0x30) * 4)/3; if(GG > 0xff) GG = 0xff;
BB = ((BB + 0x30) * 4)/3; if(BB > 0xff) BB = 0xff;
RR = ((int)(RR / 32))*32+31;
GG = ((int)(GG / 32))*32+31;
BB = ((int)(BB / 32))*32+31;



2013年12月15日日曜日

漫画カメラの画像処理のしくみを勝手に推測する件。

【漫画カメラ】っていうのがありまして。
ちょっと前に、輪郭抽出+アルファという記事で、
『どーゆーロジックなんだろ?』
と書きまして、その後、推測してみたわけですが、
今回は、この検証です。

●元画像がこれです。

●最終的にモノクロ画像なので、まずこれをグレイスケールにします。
グレイスケールはですね、R,G,Bに係数をかけて足し合わせて求めます。
Gray = R * 0.3 + G * 0.59 + B * 0.11;
こんな感じです。アバウトな計算でよいときは、整数計算にします。
即ち、GRAY=((R * 19660 + G * 38666 + B * 7209) >> 16) & 0xff; です。
まぁこれだと、絶対に出現しない階調が出現しちゃいますけどねー。
で、結果がこれです。
この画像のなかで、黒っぽい部分と、そのグレイだけど黒っぽい部分を抽出します。
それが、以下です。
この例では、0x38以下を黒にして表示しています。
この例では、0x70以下を黒にして表示しています
次に、斜線の画像を用意します。
まぁ画像と同じ大きさにすればよいです。
それがこれ。
そしてこの画像を、さっきのグレイっぽい画像でマスクをします。
そうすると、こうなります。
次は、輪郭の抽出です。
これは、ソーベルフィルタってやつを使います。
もちろん、これで抽出した値をどう使うかが問題となりますが、
簡単に言えば、『閾値を設定して、黒か白かにしてしまう』
ということです。

実際に抽出してみたのが、これです。

ということで、全部出揃いました。
ここで、
(1)黒抽出画像
(2)グレイ抽出マスク斜線画像
(3)輪郭抽出画像。
この3つを合成したのが、これです。
もちろん、【漫画カメラ】とまったく同じにはなりませんが、
そこらへんは、前処理とか、ヒストグラムを平均化するとか、閾値のとりかたとか、いくつかのパラメータの違いだと思われます。

もちろん、実際のプログラムでは、わざわざ画像を作ってから処理するわけではなく、
メモリやCPUコストを小さく抑えるべく、ひとつのLOOPの中で全て処理します。

まぁ、あたりまえですが\( ̄(エ) ̄ )/\( ̄(エ) ̄ )/

2013年11月30日土曜日

輪郭抽出+アルファ

輪郭を抽出してるらしきことはわかるけど、微妙な斜線、どーいうロジックなんだろ(* ̄∇ ̄*)