Design Wave Magazine リアルタイム・カラー映像処理回路の製作

『2003年1月号付属CPLD基板』関連製作レポート
加藤洋介

※ 本記事は,2003年1月号付属CPLD基板をご活用
いただいた読者の方による投稿レポートです.


 本回路は,カラー映像(NTSC信号)に対してリアルタイム・フレーム差分処理を行う回路です.入力データを処理してそのままテレビに出力します.ドット単位で即時処理しているため,遅延時間が非常に短く,30フレーム/sでリアルタイム処理できます.
 システム構成を以下に示します(図1)


[図1] システム構成(画像をクリックすると拡大表示します)

 また,製作した回路を以下に示します(写真1)


[写真1] 製作した回路

 CPLD基板は配線側にあります.画像メモリは,画像静止時のフレーム・バッファや,差分処理における1フレーム画像遅延素子として用いています.当初は,フレーム間差分を目ざしたものでしたが,簡易に実装できる各種モード(ポジ-ネガ変換,画像静止)を,トグル・スイッチによる入力の組み合わせにより設定できるようにしました.


●CPLDの利用法

 雑誌付属のCPLD基板は使えるピン数も多くかつスピードも速いので,演算器として用いました.このほか,EPM7128SLC-15を制御器として使用しています.遅延時間はシミュレーション上で42.4nsであり,ドット・クロック(50ns)未満です.このドット・クロック以下というのがミソで,画素データをA-D変換しながら,同時に演算処理してもよいということを示しています.

1)演算器
 過去にTTL ICを使って加算・減算回路を作ったことがあったので,演算器はこのときの回路図をそのまま踏襲しました.74F381,74F382,74S181によるキャリ・ルックアヘッド方式の加算器(減算器)をそのまま回路図入力しました.
※回路図のデータ(ntsc-hdl2.gdf)はここからダウンロードできます.

 今回は,入力段にラッチ(クリア・セット端子付き)を設けて,定数(0,255)入力も可能としました.出力段のラッチは,入力変化時の遷移状態が出力段に現れないようにする(D-Aコンバータの入力条件を確実に満たす)ためのものです.回路は単純ですが,8ビット単位なのでピン数をすぐに使い切ってしまいます.A-D変換データ,メモリ・データ,D-A変換データで24ピン(8×3)です.それがRGBそれぞれに必要なので,合計72ピン(24×4)をデータのためだけに使うことになります.
 残ったピンに,演算器の演算モード設定用の入力を割り当てました.本来は,A-D変換データをそのまま出力する機能もほしいところですが,メモリ・データ出力がA-D変換データの1フレーム時間(約33.3ms)遅れているだけなので,A-D変換データの即時出力のモードは省略しました.また,メモリ・データの書き込み動作を停止するだけで,画像データが読み出しのみとなりますので,スイッチ1個で静止画モードを実装できることから「メモリ・データをそのまま出力」するモードは残しました.

2)制御器
 制御器では,画像データ・メモリのリード・ライト,A-D変換,D-A変換の変換タイミング,演算器の入出力データのラッチ・タイミングを,源発振(40MHz),水平同期信号(約15.7KHz),垂直同期信号(約33.3Hz),偶数フィールド/奇数フィールド信号(約16.7Hz)を利用して生成します.
 VHDLソース・コードは四つに分かれています.それぞれ簡単な説明を下に記しておきます.
(a)CLK_GEN.VHDL
 40MHz(源発振)を分周して20MHz(ドット・クロック),/20MHzを生成します.
※VHDLソース・コード(CLK_GEN.vhdl)はここからダウンロードできます.
(b)H_COUNT.VHDL
 H-SYNCに同期してドット・クロックをカウントし,H-SYNCの‘L’レベル区間,カラー・バースト信号区間を避けた,水平同期期間中の51.2usを確定します.
※VHDLソース・コード(H_COUNT.vhdl)はここからダウンロードできます.
(c)V_COUNT.VHDL
 V_SYNCに同期にしてH-SYNCをカウントし,処理対象のライン数256ラインを確定します.
※VHDLソース・コード(V_COUNT.vhdl)はここからダウンロードできます.
(d)NTSC_VHDL
 EVEN/ODD信号により,A-D/D-A変換の変換クロック.演算器のラッチ用クロック.画像メモリのクロック信号,イネーブル信号,リセット信号を出力します.
※VHDLソース・コード(NTSC_VHDL.vhdl)はここからダウンロードできます.


●くふうした点

1)演算の省略(定数加算と割算処理)
 CPLD内部では1ビット拡張して9ビット単位で演算を行いました.出力データはD9〜D1,D8〜D0のどちらかを選択して出力できるようにしたので1/2の演算を省略できます(参考文献6)).
 また,9ビットに拡張された最上位ビットを‘1’とすることで+256の演算を省略できます.この+256という値は,先の1/2という演算により+128と等価になり,
 (A−B)/2((B−A)/2)
における演算が実質減算1回のみになるという効果をもたらします.演算器の機能設定に使用する端子の説明を以下に示します(表1)


スイッチ番号 ON時(H) OFF時(L) 接続先 ピン名
1 B信号出力 差分出力 EPM7256 AD_CUT
2 画像静止 動画 EPM7128 STILL
3 /1 /2+128 EPM7256 DA0_SEL
4 ポジ ネガ EPM7128 ALU_SW
未実装(H固定) メモリ出力 メモリ非出力 EPM7256 MEM_CUT

[表1] 動作設定スイッチの機能

2)ドット・クロックをH-SYNC信号によりラインごとにリセット
 ドット・クロックとH-SYNCは非同期なので,不定位相ズレがつねに生じています.そこで,H-SYNCによって,ドット・クロック生成用の分周回路をリセットすることにより,その位相ズレを軽減しました(CLK_GEN.VHDLの34〜40行目).

3)RGBそれぞれで差分演算を実行
 NTSC信号をRGBに分解し,それぞれの色信号を「三つのモノクロ信号」として扱いました.演算結果は汎用のRGB→NTSC回路によりカラーに戻されるので,データの遅延による色ずれを考える必要はありません.

4)外部スイッチの組み合わせによる動作モード切り替え
 フレーム間差分の(A−B)/2+128のほかに,B(ポジ),255−B(ネガ)などの映像処理を指定可能としました(表1)(表2)


演算器
S0 演算モード設定(A-B、B-A)
MEM_CUT MEMデータ・定数固定(0、255に固定)
DA_CUT A/Dデータ・定数固定(0、255に固定)
DA_EN 出力イネーブル
clk データラッチ用クロック入力

制御器
STILL 画像静止端子
H-SYNCO H-SYNCの遅延出力
CLP LM1881より
CLP_N A/D変換器へ
evenODD LM1881より
VSYNC LM1881より
HSYNC LM1881より
DA_EN 演算器へ
DCLK A/D変換器、D/A変換器へ
DCLK_N 演算器へ
ALU_SW スイッチ4より
ALU_CTRL 演算器S0へ
??RST 画像ICリセット
??EN 画像ICイネーブル
??CLK 画像ICクロック
(注)上記??には,次の4種類がある.
PR ―奇数フィールド:リード
PW ―奇数フィールド:ライト
NR ―偶数フィールド:リード
NW ―偶数フィールド:ライト


[表2] CPLDの機能ピンの説明


●動作確認

 付属CPLD基板を使うことで,カラー映像処理回路を小さい回路規模で安価に製作することができました.全体的には灰色(白黒系)になってしまいますが,動きの大きな部分で色の変化を認めることができます.
 差分表示の画像例を以下に示します(図2).今回製作した回路にはパソコンへのデータ転送機能がないため,動画としてキャプチャしたデータを,あらためて静止画としてキャプチャしました.動きのある,ピッチャー,バッター,キャッチャーの輝度変化が顕著になっているようすがわかります.また,輝度変化のないところは灰色なので,一見,白黒画像っぽい画像になっています.


[図2] 差分表示の画像例

 そのほかの映像事例は,http://www.bekkoame.ne.jp/ha/suke-san/で公開しています.
 また,いくつかの問題点も確認できました.動きのない静止物が完全除去できるはずですが,完全には消えていません.差分表示の画像例でもよく見ると背景が残っているようすがうかがえます.これはドット・クロック(20MHz)と映像の同期信号が完全に同期しているわけでないので,水平同期信号とドット・クロックが非同期であることに起因すると考えられます.本来は水平同期周波数の倍数を使用してPLLで同期するのですが,今回はこれを行っていません.
 また,処理だけでストレージやパソコンへのデータ転送機能がないので応用性に欠けてしまいます.


●感想

 かつて学生時代に後輩ともに白黒映像処理回路を製作したときには,TTL ICで100個近い回路で,かつ白黒映像処理しかできないものでした(参考文献6),7)).当時の回路をCPLDによって,一部の機能を再現することができました.一部分とはいえ回路規模は縮小され,また,CPLDの高機能性によりカラー(RGB各8ビット)によるリアルタイム差分まで実現することができました.ただ,カラー映像での差分はいたるところ白黒(灰色)になってしまうので最初から白黒の差分だけで実のところは十分なのかもしれません.
 本回路の入力デバイスとしてCCDカメラを用い,本回路の静止画像モードを併用すれば自作ディジタル・カメラを作ることができるかもしれません.

参考文献
1)μPD659AGSデータシート,NEC.
2)MB40768Hデータシート,富士通.
3)TMS4C1050データシート,Texas Instruments.
4)CX1645P資料,秋月電子.
5)「TI 半導体技術資料」,No.89,Texas Instruments.
6)林佳津男,「画像処理の手法を用いた物性計測の研究」,埼玉大学工学部,平成3年.
7)加藤洋介,「希土類添加ガラスにおけるファラデー効果の計測」,埼玉大学工学部,平成4年.





 DESIGN WAVE MAGAZINEのホームページへ

 CQ出版のホームページへ



Copyright(C) 2003 CQ Publishing Co., Ltd.