FPGAの部屋FPGAの部屋の有用と思われるコンテンツのまとめサイトを作りました。ISEの初心者の方には、FPGAリテラシーおよびチュートリアルのページをお勧めいたします。YUV-RGB変換7(なんか不具合が。)”YUV-RGB変換6(やったー、うまく行きました)”でできたと思ったYUV-RGB変換。先生に見せたら欠点を指摘されてしまった。それは、輝度が急激に変わるところが飽和しているように見えるということだ。下の写真はCMOSカメラからディスプレイに表示した画面をデジカメで取ったものの一部を拡大している。それはどの部分かと言うと、パソコンの液晶ディスプレイの枠とその表示画面の間が問題となった。黒い枠と広く光る画面の境にピンクの矢印で示す白い線が入っているのがわかる。この白い線が出るのかが問題だ。この線は輝度が極端に変わる部分に現れる。黒いコードと白っぽい風景とか。下の写真はダウンロードケーブルのコードの周りにできた白い線だ。なんか飽和しているように見える。エッジ検出しているみたい。してこうなるのか?YUV-RGB変換がいけないのか?それとも元からなのか?原因究明のため、Y信号だけを表示してみた。カラーの時と同じ場所を写した写真だが、特に黒いケーブルの周りが白くなっているのがわかるとおもう。(下の写真をクリックして拡大してみると、良く見えます)本当に輝度信号からおかしいのか、ChipScopeを入れてデータを見てみることにした。使用したのは、下の写真のような画像だ。どこがポイントかと言うと、VGA信号の最初に輝度がおかしい処を持ってくるようにした。すると、ChipScopeのトリガは最初の水平描画信号のスタートでかければ良いことになるからである。ディスプレイの枠と液晶表示画面のふちの境界の白く飽和している部分が左上端にある画像ということになる。これをChipScopeでみたのが下の図になる。CMOSカメラから来たデータとなる。0の時がYUVのうちのY(輝度信号)が出力されている。その部分をピンクの四角で囲んである。それは、VSYNCが来てから最初のHREFが1になった時の最初のデータから35個目のデータだ。なっていて、FFから00に飛んでいる部分がある。この部分が問題だと思う。CMOSカメラに原因があるようだ。これは、SCCBバスのコントローラをやはり、早急に開発してCMOSカメラの設定をいじってみる必要がありそうだ。#そういえば、デバックの過程でRGBの飽和演算を外してみた。その時は、蛍光灯やその辺の輝度が高いところが黄色になった。黄色は赤と緑の混合色なので、青が飽和しているようだ。青は飽和しやすいと思う。それは計算式を見ても言えるのではないだろうか?(追記)”CMOSカメラから画像を入力してディスプレイへ出力15(できた!!!)”の下の画像は、輝度の変化が大きいところでも正常に表示されている。(OV7760)だった。何か情報があれば、ぜひ教えて下さい。»コメントいつもお世話になっております。データの内容を見ると8bitで処理されているのですね。カメラは10bitデータのようですが、MSB側8bitを使用されているのでしょうか?(カメラはデフォルトが10bitで8bitに設定可能?)10bit中、LSB側8bitを使用されているのであれば辻褄が合いそうな気がします。]takepon256さん、こちらこそ、いつもお世話になっております。残念ながら、ちゃんとYUVデータ出力(bit9)~YUVデータ出力(bit2)までを入れているはずです。カメラデータにUCFでマップしてあります。entityのカメラのデータ入力が下です。CMOSカメラからのYデータUCFの設定が下です。http://www.esp.co.jp/products/CQBB_IMG/cqbbimg.pdf合っているはずなんですけど。それに輝度の変化が大きいところというのが、おかしいような気がします。輝度の高いところでサチるのならば、わかるんですけど。]うーん、いや、CMOSカメラとかCCDもそうですけど、出力って結構いい加減ですよ。ノイズも大きいですし。それこそ一台100万以上もする放送用カメラで、これだというのならクレームものですけど。1個の原価数100円レベルなら、まあ、この程度かも知れません。]くりさん、こんにちは。しょうがないかもしれないですが、もうちょっとゲインを落とすとかすると改善されるのでは?と思っています。Yデータを見ると0x0~0xFFの範囲で演算しているため飽和しやすいのではないのでしょうか?Yデータを0x10~0xEBの間に変換するか0x0~0xFFに対応できるように演算を変更したほうがよさそうな気がします。カメラにYの出力範囲0x10~0xEBを指定するレジスタは無いでしょうか?また、輝度が0xFFから0x0になっているところを見るとカメラ内でsharpnessがかかっているような気がします。filterを掛けてボケさせた後、はっきりさせるためにsharpnessを掛けている可能性はありますね。そのようなレジスタはありますか?あるいはカメラのYCbCr演算があまりよくないかもしれませんね。]frafraさん、こんにちは。貴重なアドバイスありがとうございます。いうビットがあるので、これを解除しようと思います。レジスタを設定する回路を作成中のなので、できてからやってみます。先にやってみたいと思います。takepon256さん。お世話になっております。BT.601はテレビの規格ですよね?このビデオカメラは24MHzを入れるので、違うのでは?と思っています。データはYUYVというフォーマットで出てくるようです。画像は綺麗に写っていますが、エッジがかなり強調されている状態です。これが修正できれば問題は無いですが。]データシートが見れないのでどこまで本当なのか分かりませんが、こちらのカタログによるとKBCR-M04VGのYUV422はITU-656規格となっています。]takepon256さん、こんにちは。ITU-656規格はよくわからないのですが、下のサイトを見ると、SAVは映像信号の初めの時のブランク部分、EAVは映像信号の終りのブランク部分に入っているようですね。http://arx.ee.utsunomiya-u.ac.jp/azlab/members/sinsaku/old/itu656.htmlhttp://blog-imgs-35-origin.fc2.com/m/a/r/marsee101/YUV_RGB_conv_19_091211.png上の図に示したタイミングではすでに映像信号が来てしまいっています。1になっていることでわかります。この辺のタイミングは下のタイミングチャートに書いてあります。http://blog-imgs-36-origin.fc2.com/m/a/r/marsee101/YUV_RGB_conv_2_091128.pngなお、データシートはWeb上にOV7640のしか落ちていませんが、OV7725もだいたい、OV7640と一緒です。レジスタも違いますが、HREFが1の時にYUVのデータが出ているのは一緒です。