FPGA活用回路&サンプル記述集(3) ―― ビデオ信号処理回路
tag: 半導体 電子回路 ディジタル・デザイン
技術解説 2009年3月25日
事例3.3×3画素のフィルタによるビデオ・ノイズ除去回路
浮森 秀一
外部回路
- 回路図:なし
- 主要部品:なし
- 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近傍要素について説明します.
図3-1 ある画素に対する近傍画素の位置
リアルタイム処理を簡潔に行うためには,1ピクセル分のデータ処理である8近傍要素の合計9個のデータを,1ピクセル・クロック時間内で処理することが求められます(図3-2).
図3-2 8近傍画素処理をリアルタイムに行う方法
● 隣接ピクセルの平均値を出力する平均値フィルタ
平均値フィルタ(図3-3)はシンプルな動作で実現が簡単です(リスト3-1).3×3=9個のピクセル(画素)データの平均値がフィルタの出力です(出力は合計値9で割り算される).ノイズが重畳していると考えられる極端に大きな値を持ったデータや,極端に小さな値のデータが含まれる場合,出力されるデータに大きな影響があります.
図3-3 平均値フィルタの考え方
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)