PeacefulWish

Photograph & Programming

トーンカーブ(S字)

2007-01-09 00:03:08 | Programming
ようやくトーンカーブの機能を実装できそうです。
以前から(だいぶ前ですがw)イマイチどうやったらいいのかと思ってましたが、ここにきて、ぽんぽんといろんなことがわかりはじめました^^)

まずは、S字カーブ。

式については、下記リンク参照。

(コード)
uses
math

function Sigmoid(x:byte;c:integer):byte;
begin

result := trunc(255/(1+power((2.718),((c/100)*(-x+127))));

end;


図1.


左が元画像。右がc=3で処理したとき。


図2.c=3のときのトーンカーブ

ソフトにはまだトーンカーブを表示する機能を実装していないんだな…^^;

ヒストグラムの表示も未実装…テキストで吐き出すようにはしてるので、エクセルでグラフを書いた。やりたいことはいっぱいだが、時間がない…

図3.図1で示した元画像のヒストグラム


countは、出現回数です。sつけるか、frequencyのほうが良かったかな?
画素は、画素値。R、G、Bは、それぞれ赤、緑、青を表しています。

図4.図1で示したc=3つまり係数0.03のときのヒストグラム



これだけだと、S字トーンカーブについて見せているだけなので、もうちょっとプラス。

16bit画像について調べていたときに、書いてあったのですが、トーンカーブなどを使って処理する場合、8bitで処理するのではなく16bitにしてから処理するといいらしい。

では、早速。

図4の処理後のヒストグラムをみると画素値が0に近いcountが0になっています。これは、図2を見てわかるとおりです。せっかく0から255までの値があるのに、これではめいいっぱい有効利用できていません。これを端から端まで使う場合は、単純に線形濃度変換を行う。

さらに、画像にS字カーブ処理を行う前に、前回書いた線形濃度変換を使って8bitから16bitにし、S字カーブ処理をした後、再び線形濃度変換で16bitから8bitへ変換する操作を行う。

まず16bitでのS字カーブを示す。
図5. 16bitでのトーンカーブ

8bitの時(図2参照)のカーブに近いカーブを描いていると思う。

図6. 8bitでの処理と16bitでの処理

左が8bit, 右が16bitで処理した画像である。

右のほうが、若干綺麗?w
まあ、曲線が微妙に違うのでなんとも言えないですね。


図7. 16bitで処理したときのヒストグラム


この図7のヒストグラムでは、(よくわからないかもしれないが^^;)、0から255まで、綺麗に使われている。また、図4のヒストグラムでは、ところどころにまったくつかわれていない画素値(つまりcountが0)があったが、16bitでは、それがなくなっている。








今回は、S字カーブだけであったが、指定した点を通る線の式はスプライン法で出すとのこと…
これはまた今度。
C言語による最新アルゴリズム事典にコードが載ってるので、それを参考にする予定です。

なんか、自分が調べてるものが、ジグソーパズルのパーツのように思えて、それがだんだんとはまってくる感覚は楽しいですね!

ただ、ソースは綺麗にはまらず、だんだん、散らかってきてますがorz

注意!
これらの画像は、キャプチャした後、縮小などの処理が入っているので、ヒストグラムとは一致しません^^;jpgだし。

参考
C言語による最新アルゴリズム事典



LINK

自然対数底のe

東京電気大学情報環境学部情報演習B
 ビットマップ画像の処理

数値解析入門
 3次スプライン補間法

プロが教える写真レタッチ講座
 弟1回レタッチとは自分だけの作品を創ること!




ジャンル:
ウェブログ
Comments (2)   この記事についてブログを書く
この記事をはてなブックマークに追加
« 8bit | TOP | 久ぽじ~ »
最近の画像もっと見る

2 Comments

コメント日が  古い順  |   新しい順
Unknown (Ryuichi)
2010-10-22 09:00:30
トーンカーブをiPhoneアプリとして提供できないかを考えておりまして、三次スプライン関数を使う方法が大変参考になりました。

リンクありがとうです。
こんばんは (Souichi K.)
2010-10-23 22:13:27
コメントありがとうございます。
ヒントになるものがあって良かったです。

post a comment

Recent Entries | Programming

Similar Entries

Trackback

Trackback  Ping-URL
ブログ作成者から承認されるまでトラックバックは反映されません。