www.久久久久|狼友网站av天堂|精品国产无码a片|一级av色欲av|91在线播放视频|亚洲无码主播在线|国产精品草久在线|明星AV网站在线|污污内射久久一区|婷婷综合视频网站

當前位置:首頁 > > FPGA開源工作室

基于FPGA形態(tài)學開運算、閉運算和梯度的實現(xiàn)

1 概述

開運算一般平滑物體的輪廓、斷開較窄的狹頸并消除細的突出物。閉運算同樣也會平滑輪廓的一部分,但與開操作相反,它通常會彌合較窄的間斷和細長的溝壑,消除小的孔洞,填補輪廓線的中的斷裂。

形態(tài)學開運算與閉運算:

形態(tài)學開運算就是先對圖像進行腐蝕然后在膨脹,表達式即:


形態(tài)學閉運算就是先對圖像進行膨脹然后在腐蝕,表達式即:

1 開運算和閉運算演示(原圖由美國國家標準和技術(shù)研究所提供)

如圖1所示,a為噪聲圖像,b為結(jié)構(gòu)元,c為腐蝕后的圖像,dA的開運算,e為開運算的膨脹,f為開運算的閉運算。f相對于a經(jīng)過了一系列的形態(tài)學運算之后紋理變得更加清晰,只為后期的指紋識別打下基礎。

膨脹和腐蝕可與圖像相減結(jié)合起來得到一幅圖像的形態(tài)學梯度。

形態(tài)學梯度:

灰度圖像的膨脹減去灰度圖像的腐蝕就是形態(tài)學梯度,表達式:

2 CT掃描頭部圖像

如圖2所示,a為頭部CT掃描圖像,b為膨脹后的結(jié)果,c為腐蝕后的結(jié)果,d為形態(tài)學梯度。計算圖b與圖c的差得到圖d,圖d顯示出了區(qū)域間的邊界被清楚地描繪出來。這與二維微分圖像的預期結(jié)果相同。

2 matlab實現(xiàn)

基于matlab的形態(tài)學開運算以及閉運算源碼:

%% image open close

clear all

img_a = imread('flower.bmp');

figure,imshow(img_a);

title('rgb');

img_b = rgb2gray(img_a);

figure,imshow(img_b);

title('gray');

a = [1,1,1;

1,1,1;

1,1,1];

img_c = imopen(img_b,a);

figure,imshow(img_c);

title('open');

img_d = imclose(img_b,a);

figure,imshow(img_d);

title('close');

3 實驗原圖

4 灰度圖像

5 開運算的結(jié)果

6 閉運算的結(jié)果

基于matlab的形態(tài)學梯度源碼:

%%gradient

clear all

img_a = imread('flower.bmp');

figure,imshow(img_a);

title('rgb');

img_b = rgb2gray(img_a);

figure,imshow(img_b);

title('gray');

a = [1,1,1;

1,1,1;

1,1,1];

img_c = imerode(img_b, a);

figure,imshow(img_c);

title('erode');

img_d = imdilate(img_b, a);

figure,imshow(img_d);

title('dilate');

img_e = img_d -img_c;

figure,imshow(img_e);

title('gradient');

img_f = img_b -img_c;

figure,imshow(img_f);

title('gradient1');

img_g = img_d -img_b;

figure,imshow(img_g);

title('gradient2');

7 梯度0

8 梯度1

9 梯度2

3 FPGA實現(xiàn)

10 為整個設計的RTL級電路圖

形態(tài)學開運算源碼:

//--------------------------------

// open

//--------------------------------

erode erode_inst(

.clk(TFT_clk),

.rst_n(Rst_n),

.hs_in(o_hs),

.vs_in(o_vs),

.din(o_y_8b),

.din_valid(o_de),

.dout(erode_out),

.dout_valid(erode_de),

.hs_out(erode_hs),

.vs_out(erode_vs)

);

dilate dilate_inst(

.clk(TFT_clk),

.rst_n(Rst_n),

.hs_in(erode_hs),

.vs_in(erode_vs),

.din(erode_out),

.din_valid(erode_de),

.dout(dilate_out),

.dout_valid(TFT_de),

.hs_out(TFT_hs),

.vs_out(TFT_vs)

);

assign TFT_rgb = {dilate_out[7:3],dilate_out[7:2],dilate_out[7:3]}; //Y

結(jié)果:

11 FPGA開運算效果

形態(tài)學閉運算源碼:

//--------------------------------

// close

//--------------------------------

dilate dilate_inst(

.clk(TFT_clk),

.rst_n(Rst_n),

.hs_in(o_hs),

.vs_in(o_vs),

.din(o_y_8b),

.din_valid(o_de),

.dout(dilate_out),

.dout_valid(dilate_de),

.hs_out(dilate_hs),

.vs_out(dilate_vs)

);

erode erode_inst(

.clk(TFT_clk),

.rst_n(Rst_n),

.hs_in(dilate_hs),

.vs_in(dilate_vs),

.din(dilate_out),

.din_valid(dilate_de),

.dout(erode_out),

.dout_valid(TFT_de),

.hs_out(TFT_hs),

.vs_out(TFT_vs)

);

assign TFT_rgb = {erode_out[7:3],erode_out[7:2],erode_out[7:3]}; //Y

結(jié)果:

12 FPGA閉運算效果

形態(tài)學梯度源碼:

//---------------------------------------------

//Morphological gradient.

//---------------------------------------------

erode erode_inst(

.clk(TFT_clk),

.rst_n(Rst_n),

.hs_in(o_hs),

.vs_in(o_vs),

.din(o_y_8b),

.din_valid(o_de),

.dout(erode_out),

.dout_valid(TFT_de),

.hs_out(TFT_hs),

.vs_out(TFT_vs)

);

dilate dilate_inst(

.clk(TFT_clk),

.rst_n(Rst_n),

.hs_in(o_hs),

.vs_in(o_vs),

.din(o_y_8b),

.din_valid(o_de),

.dout(dilate_out),

.dout_valid(),

.hs_out(),

.vs_out()

);

assign dout = dilate_out - erode_out;

assign TFT_rgb = {dout[7:3],dout[7:2],dout[7:3]}; //Y

//assign TFT_rgb = {o_y_8b[7:3],o_y_8b[7:2],o_y_8b[7:3]};     //Y

結(jié)果:

13  FPGA形態(tài)學梯度效果

總結(jié):

迄今為止許多形態(tài)學的技術(shù)都是以灰度級形態(tài)學概念為基礎。這包括形態(tài)學平滑、形態(tài)學梯度、頂帽變換、底帽變換、粒度測定和紋理分割等。


本站聲明: 本文章由作者或相關(guān)機構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內(nèi)容真實性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時聯(lián)系本站刪除。
關(guān)閉