- 締切済み
RGB画像をYIQに変換・抽出
今VB6で画像(RGB)から(YIQ)に変換し各Y・I・Qの情報を画像として抽出したいのですが方法がわかりません。抽出した各情報をグレースケール(モノクロ)で表示する方法がわかる方がいましたら、お力をお貸しください。よろしくお願い致します。
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- redfox63
- ベストアンサー率71% (1325/1856)
お示しのURL行列を見た限りでは Iは 水色から赤色へのグラデーション Qは 緑色から紫へのグラデーション ともに数値が0に近づくに従い RGBは0.5(つまり256階調なら128)に近づくようにすればいいのかも ・・・ お示しのURLのカラーパレットで見ると少し違うようですが カラーパターン(RGBの原色またはCYMの原色)といったもののサンプルが無いか確認されてみてはいかがでしょう
- redfox63
- ベストアンサー率71% (1325/1856)
RGBの取得には PictureBoxやFormにイメージを表示して Pointメソッドを使えば取得できます 取得したデータ(LONG型)は BGRの順で並んでいます RGB = POINT(x,y) B = RGB / &H10000 G = (RGB / &H100) And &HFF R = RGB And &HFF で分解します YIQへの変換は Y = 0.2990 * R + 0.5870 * G + 0.1140 * B I = 0.5959 * R - 0.2750 * G + 0.3210 * B Q = 0.2065 * R - 0.4969 * G - 0.2904 * B といった具合でしょう RGBによるグレースケールなら RGB重み付けを加味しながら加算し平均をとればいいように思います 単純に色情報の平均なら Gray = ( R + G + B ) / 3 重みを考慮するなら Gray = ( 0.3 * R + 0.5 * G + 0.2 * B ) といった具合でしょう
補足
お返事ありがとうございます。 私の質問のしかたが悪かったようで「Y」成分でグレースケールを抽出する事はできるのですが「I」、「Q」の成分を画像化したいのです。「Y」は輝度情報が取得でき、そのままRGB関数に変数で受け渡せば使えるのですが「I」と「Q]はそのままでは画像にできない数値になっていました。具体的にこのサイトのような一枚の画像から各成分の画像を抽出したいのです。「http://en.wikipedia.org/wiki/YIQ」(勝手にリンクを貼り付けてゴメンなさい!)。 お手数かけますが分かりましたら宜しくお願いいたします。