nao-milkの経験ブログ

25年間の半導体エンジニア経験で知り得た内容を記載したブログです。

画像処理の基本 その1

f:id:nao-milk:20210317124221p:plain

画像処理を設計する上で私は画素データとは別に以下の信号を準備して、

画素データと一緒にパイプライン処理させます。

 ①フレーム開始信号(パルス信号)

 ②フレーム終了信号(パルス信号)

 ③ライン開始信号(パルス信号)

 ④ライン終了信号(パルス信号)

 ⑤画像データ有効期間信号(イネーブル信号)

 ⑥ピクセルネーブル信号

 ※機能によって、いらない信号もありますが、基本的にこれら信号を準備して処理検討します。

 

①フレーム開始信号

 1つの画像(1つのフレーム)の開始ポイントを示します。

 これは、レジスタ値を取り込んだり、内部処理を初期化する目的で使用します。

②フレーム終了信号

 1つの画像(1つのフレーム)の終了ポイントを示します。

 これは、1フレーム分の演算結果をレジスタに保存する目的で使用します。

 例えば、ヒストグラム処理などです。

③ライン開始信号

 ライン毎の開始ポイントを示します。

 これは、ライン処理前に初期化する場合に使用します。

④ライン終了信号

 ライン毎の終了ポイントを示します。

 これは、ラインカウンタをカウントアップさせたり、結果を保存したい場合に

 使用します。

⑤画像データ有効期間信号

 画素データの有効イネーブルを示します。

 ブランキング期間などで無効になった画素を示す為に使用します。

ピクセルネーブル信号

 ビニング機能や間引き機能でその画素が有効/無効になったことを示す為に使用します。

 

下図は、1例です。

f:id:nao-milk:20210311173916p:plain

 ライン方向のブランキングが無く、ビニング機能後のタイミング図になります。

 

設計上の注意として、

 ビニング機能や間引き機能でレジスタ設定値によって間隔が可変になる場合、

 機能結果後のパイプライン処理の処理段数を気を付ける必要があります。

 特に、

 マトリクス演算がある場合は、単純にクロックの立ち上がりで

 ラッチするのではなく、ピクセルネーブルでラッチしてパイプラインを

 構成する場合もあります。

 あと、最終ラインもピクセルネーブルがアサートしない為、処理が必要に

 なる場合もあります。

 

用途によって色々な方法がありますが、

フレーム毎に演算処理を初期化するのか、

ライン毎に演算処理を初期化するのか、

など、明確にした上で必要な信号を選別する必要があると考えます。