nao-milkの経験ブログ

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

画像処理の基本 その3

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

画像処理の拡大と縮小処理です。(メモリを使用する場合)

 

基本概念は以下の通りです。

 【拡大処理】

  入力された画像データをメモリに格納し、変倍カウンタに応じて、

  メモリからリードして拡大します。

 【縮小処理】

  変倍カウンタに応じてメモリに格納し、1ライン格納終了後、

  メモリを順にリードします。

 

処理イメージは、以下の通りです。(拡大は3倍、縮小は1/3倍を例)

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

※横方向への拡大縮小をイメージ化しています。縦方向も同様の考えになります。

 

上記イメージは単純拡大と単純縮小をした場合に当ります。

これをそのまま出力するとカクカクした画像になります。

そのカクカクした画像を滑らかにする為に色々な補間処理を行います。

拡大処理の場合は、メモリからリードする時に補間処理を行い、

縮小処理の場合は、メモリにライトする時に補間処理を行います。

尚、補間方法は、

 リニア補間、バイリニア補間、バイキュービック補間などがあります。

 

変倍カウンタとは?

変倍カウンタは、整数部と小数部に分かれたカウンタで、

整数部がメモリのリードアドレスやライトアドレスとなり、

小数部が注目画素からの距離となります。

この小数部は補間処理で利用したりします。

このカウンタは変倍率に応じて加算します。

例えば、

 3倍の場合、リードするたびに0.333づつカウントアップし、

 1/3倍の場合、整数部と入力画素位置が一致した時に3.000づづカウントアップします。

 

拡大と縮小時のカウントアップは以下のように動きます。

 

【拡大時】

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

 

【縮小時】

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

 

変倍カウンタの設計は固定小数とし、変倍精度に応じて小数部のbit精度を変更します。

また、変倍カウンタの加算値は、ソフトで変倍率から加算値を求め、レジスタ設定する方が効率的です。