SSブログ

楽譜アーカイブアプリ - その13 グレー変換 [考え中の問題]

こないだからやってる楽譜をスキャナで読んでPDFにするためのアプリ。OpenCVで遊んでしまって何やってるか忘れそうになるけど、どこまで言ったか思い出した。今日はディテールの見栄えを左右するラティテュード補正について。

5  ラティテュード補正

ここでいうラティテュード補正というのはコントラストを増す補正のことのつもりである。どうせ元画像はモノクロなので白は白、黒は黒としゃきっとしていた方がいい。しかし完全に2値にしてしまうとジャギーになって目が疲れる。ということでちょうどアンチエイリアス処理のように、ピクセル境界にはグレーが残るようにしたい。

これはOpenCVでもvImageでもヒストグラム処理というのをどちらも持っていて、それを使えばできるはず。これは実際に実装するときに考えればいい、はず。

5.1  グレー変換の問題

そのまえにちょっと気になることができた。スキャナでグレーとして読んでそのままPhotoshopで開くとインデクスカラーになっている。しかし、Cocoaではインデクスカラーはサポートされない。どうなってるか確認する必要がある。まさか静止画がNSImageとして読めない、ということはないはずなんだけど。

試してみるとインデクスカラーはNSCalibratedRGBColorSpaceのカラースペースで、つまりRGBカラーで読み込まれることがわかった。たとえばこれで確認できる。
    NSImage *img = [[NSImage alloc] initWithContentsOfFile:filePath];
    NSArray *iary = [img representations];
    NSImageRep  *irep = [iary lastObject];
    NSLog(@"%@", [irep class]);
    NSLog(@"%@", [irep colorSpaceName]);
とする。ここでfilePathはインデクスカラーのtiffファイルのパスの入ったNSStringである。コンソールの出力は
2010-12-06 21:38:32.224 OpenCVCamouflage[41056:a0f] NSBitmapImageRep
2010-12-06 21:38:32.857 OpenCVCamouflage[41056:a0f] NSCalibratedRGBColorSpace
となる。

まあ、それならそれでいい。
ところで、カラー画像をグレーに変換するというようなのはCocoaのレベルではサポートされていない。いろいろ探したけど見当たらなかった。

OpenCVにはcvtColorという簡単な関数があって変換できる。しかしOpenCVはカラースペースをサポートしていないので表現するデバイスごとの色の差は無視されて
1206eq51.png
と決め打で変換されるだけみたい。今回はべつにカラースペースの問題は初めからないのでOpenCVを使ってもいいけど、それ以前に式-1に従って変換するNSBitmapImageRepのカテゴリを書けばいい。たいした作業ではない。今回は極端には
1206eq52.png
などでも十分だよな。
nice!(0)  コメント(0)  トラックバック(0) 

nice! 0

コメント 0

コメントを書く

お名前:
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。

トラックバック 0

献立12/06献立12/07 ブログトップ

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。