FPGA活用回路&サンプル記述集(3) ―― ビデオ信号処理回路

大中 庸生

事例3.3×3画素のフィルタによるビデオ・ノイズ除去回路

浮森 秀一

外部回路

  • 回路図:なし
  • 主要部品:なし
HDL記述
  • Verilog HDL:リスト3-1リスト3-2
  • 外部入力:Din
  • 外部出力:Dout
  • 内部入力:D02IN,D01IN,D00IN,D12IN,D11IN,D10IN,D22IN,D21IN,D20IN
  • 内部出力:Dout
  • パラメータ:なし
評価環境
  • Altera社,Quartus II Web Edition Version 8.0

 ディジタル画像処理では近傍という考え方があります.着目するピクセルX0について,隣接するピクセルX1からX8を考えることを8近傍要素といいます[図3-1(a)].隣接するピクセルのうち上下左右の要素であるX2,X4,X6,X8を考慮したものを,4近傍要素といいます[図3-1(b)].事例によってはもっと多くの近傍要素を多く考える場合もあります.ここでは,最もよく用いられる8近傍要素について説明します.

zu03_01.gif
図3-1 ある画素に対する近傍画素の位置

 リアルタイム処理を簡潔に行うためには,1ピクセル分のデータ処理である8近傍要素の合計9個のデータを,1ピクセル・クロック時間内で処理することが求められます(図3-2)

zu03_02.gif
図3-2 8近傍画素処理をリアルタイムに行う方法

● 隣接ピクセルの平均値を出力する平均値フィルタ

 平均値フィルタ(図3-3)はシンプルな動作で実現が簡単です(リスト3-1).3×3=9個のピクセル(画素)データの平均値がフィルタの出力です(出力は合計値9で割り算される).ノイズが重畳していると考えられる極端に大きな値を持ったデータや,極端に小さな値のデータが含まれる場合,出力されるデータに大きな影響があります.

zu03_03.gif
図3-3 平均値フィルタの考え方

`timescale 1ns / 1ps

module average
(
 CLK,
 RESET,
 
 // Upper Line
 D02IN, 
 D01IN,
 D00IN,
 
 // Middle Line
 D12IN, 
 D11IN,
 D10IN,
 
 // Under Line
 D22IN,
 D21IN,
 D20IN,
 
 Dout
);

 input CLK;
 input RESET;
 
 // Upper Line  ←3×3=9個のデータを入力
 input [7:0] D02IN; 
 input [7:0] D01IN;
 input [7:0] D00IN;
 
 // Middle Line
 input [7:0] D12IN; 
 input [7:0] D11IN;
 input [7:0] D10IN;
 
 // Under Line
 input [7:0] D22IN;
 input [7:0] D21IN;
 input [7:0] D20IN;
 
 output [7:0] Dout;

 // inner REG. 12bits=8+4(9data) ←※1
 reg [11:0] Dinner;
 
 // for output"Dout"
 reg  [7:0] D;
 initial D = 8'h00;
 
 always @( posedge CLK ) begin

  Dinner <= D00IN + D01IN + D02IN←※ここで9個のデータを足し算
    + D10IN + D11IN + D12IN
    + D20IN + D21IN + D22IN
    ;

 end

 assign Dout = ( Dinner / 9 ); ←合計を9で割る

endmodule

リスト3-1 平均値フィルタのVerilog HDL記述(average.v)

※1:けたあふれを起こさないように12ビットのレジスタを用意

組み込みキャッチアップ

お知らせ 一覧を見る

電子書籍の最新刊! FPGAマガジン No.12『ARMコアFPGA×Linux初体験』好評発売中

FPGAマガジン No.11『性能UP! アルゴリズム×手仕上げHDL』好評発売中! PDF版もあります

PICK UP用語

EV(電気自動車)

関連記事

EnOcean

関連記事

Android

関連記事

ニュース 一覧を見る
Tech Villageブログ

渡辺のぼるのロボコン・プロモータ日記

2年ぶりのブログ更新w

2016年10月 9日

Hamana Project

Hamana-8最終打ち上げ報告(その2)

2012年6月26日