「お昼の放送」の思い出

多数のスキャンした画像を画像処理ソフトで画質調整を行うことをちょくちょくやっています。
枚数が多いため(1回で数百枚単位)、画像処理ソフトと自動運転ソフトを組み合わせてバッチ処理をやらせていますが、この間PCが使えません。
ですのでいっそ、自分でソフトを作ってしまおうと考えたのですが、画質調整のためのアルゴリズムがわかりません。

手順としてはスキャン画像に対し、グレイスケール化->レベル補正->シャープネス->減色です。
このうち、レベル補正だけが、手ごろなアルゴリズムの解説が見つからず困っています。
どこかにこうした画像処理のアルゴリズムを解説しているWebはないでしょうか。

VBとかCのサンプルがあれば最高ですが、なくてもいいです。贅沢はいいません。

A 回答 (2件)

>サンプルも書いていただいてありがたいのですが


>これは輝度分布の抽出でしょうか。
>知りたいのはこのあとの補正アルゴリズムです。
だったら、そう書いてください。

例えるなら輝度分布の下限n%の範囲の画素に任意の値を引く、あるいは係数を掛ける、あるいは定数に置き換えるをすれば、貴殿が言う暗いところは●●にできます。
リニアにやりたいなら、変換テーブルを作る、あるいは式を用意すればできます。
貴殿クラスなら自在にプログラムできると思いますよ。
    • good
    • 0
この回答へのお礼

ありがとうございます。やってみます。

お礼日時:2005/08/30 13:30

なんか難しいことをしてますね。

^^;
ファイルサイズを小さくするのか、輪郭抽出するような内容でしょうか・・・

参考にならないかも知れませんが、

Private Sub Command3_Click()
Dim i As Integer
Dim a As Double
Dim aR As Double
Dim aG As Double
Dim aB As Double
Dim RR(256) As Integer
Dim GG(256) As Integer
Dim BB(256) As Integer
Dim X As Integer
Dim Y As Integer

Picture1.Picture = LoadPicture("c:\test.bmp")

For X = 1 To 50
For Y = 1 To 50
a = Picture1.Point(X, Y)
Text1.Text = a
aB = Int(a / 65536)
aG = Int((a - aB * (65536)) / 256)
aR = a - aB * (65536) - aG * 256

For i = 0 To 255
If i = aR Then RR(i) = RR(i) + 1
Next

Next
Next
End Sub

で、
RR(n)のnは輝度に相当するので、これで画像のレベルは判ると思います。
グレイスケール化しているようですので、RGB分離は不要でしたね。

このあと、輝度のmax-minを調べたり、シフトさせる量を決めたりして補正すれば・・・

外してたらすみません。
    • good
    • 0
この回答へのお礼

サンプルも書いていただいてありがたいのですが、これは輝度分布の抽出でしょうか。
知りたいのはこのあとの補正アルゴリズムです。
暗い部分は暗く、明るい部分は明るくなどしたり、コントラストをきょうちょうしたりなどです。

お礼日時:2005/08/27 16:17

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!