Thông tin tài liệu
bộ giáo dục đào tạo trờng đại học bách khoa hà nội - LÊ THế THANH Nghiên cứu xử lý ảnh FPGA Chuyên ngành: điện tử viễn thông luận văn thạc sĩ KHOA Học Ngời hớng dẫn khoa học : TS Phạm Ngọc Nam Hà Nội - 2010 LI GII THIU Trong nhng nm gn õy, nhu cu v x lý nh s ang phỏt trin mnh m Cỏc h thng x lý nh s c trin khai rng khp l cụng c c lc khụng ch cho cỏc c quan on th m cho c cỏc cỏ nhõn nhiu lnh vc khỏc Hin nay, vi s phỏt trin ca cụng ngh mỏy tớnh s, cỏc cụng ngh x lý nh s l rt d dng v trc tip bng nhiu phn mm chuyờn dng trờn mỏy tớnh Tuy nhiờn, vic x lý nh s trờn mỏy tớnh gp rt nhiu v mt giỏ thnh, v kớch thc lng Mc ớch ca lun l nghiờn cu ng dng cụng ngh mch tớch hp logic kh trỡnh FPGA thc hin x lý cỏc nh s trc tip trờn phn cng vi nhiu u im vt tri m cho kt qu ging nh vic x lý bng cỏc phn mm chuyờn dng Tỏc gi xin chõn thnh cỏm n TS Phm Ngc Nam, B mụn K thut in t tin hc, Khoa in t vin thụng, ó tn tỡnh hng dn, trao i nhng kinh nghim v nhng ý kin quý bỏu Xin gi li cỏm n ti cỏc Thy, Cụ Khoa in t vin thụng, ti gia ỡnh, bn bố ó giỳp v to iu kin tỏc gi cú th hon thnh lun v khúa hc Cui cựng, cng phi núi rng dự ó c gng, nhng khụng trỏnh nhng sai sút quỏ trỡnh thc hin lun Nhng tỏc gi luụn ý thc c rng, nhng sai sút y cng l mt c hi cho tỏc gi rốn luyn cỏc k nng, khc phc cỏc nhc im ca mỡnh ú tt c l nh s theo dừi, hng dn, phn bin tn tỡnh v nghiờm tỳc ca cỏc thy, cụ hi ng bo v Xin chõn thnh cm n! H Ni, ngy 20 thỏng 04 nm 2010 Tỏc gi I Lờ Th Thanh - in T Vin Thụng 2007-2009 MC LC LI GII THIU I TểM TT II MC LC DANH MC CC HèNH V, TH PHN M U PHN I - C S Lí THUYT X Lí NH S 1.1 Mt s khỏi nim c bn x lý nh s 1.1.1 Phn t nh - Pixel 1.1.2 Pixel v cỏc lõn cn 1.1.3 ng liờn kt 1.1.4 Mc xỏm 1.2 Tng quan v mt h thng x lý nh s 1.2.1 Thu thp nh 11 1.2.2 Tin x lý nh: 12 1.2.3 Phõn vựng nh: 13 1.2.4 Phõn tớch nh: 13 1.2.5 Nhn dng nh: 13 1.3 Cỏc thnh phn ca h thng x lý nh: 14 1.4 Cỏc thut toỏn x lý nh s 16 1.4.1 Toỏn t ca s (windowing operator) 16 1.4.2 Tng tng phn 16 1.4.3 Nhõn chp (convolution) 17 1.4.4 Cỏc b lc 18 1.4.5 Dũ biờn 22 1.4.6 Phõn ngng, phõn vựng v nh phõn húa nh s 23 1.4.7 X lý ng cu nh nh phõn 25 1.4.8 Bi toỏn ỏnh nhón i tng: 26 1.4.9 Xỏc nh cỏc c trng hỡnh hc ca i tng 28 Lờ Th Thanh - in T Vin Thụng 2007-2009 1.5 Mt s gii phỏp phn cng cho h thng x lý nh s 29 1.5.1 FPGA 29 1.5.2 DSP Processor 29 1.5.3 Mainboard, laptop 30 PHN II - KHI QUT V FPGA 32 2.1 Gii thiu chung v FPGA v ngụn ng VHDL 32 2.1.1 Khỏi nim v ng dng FPGA 32 2.1.2 Kin trỳc FPGA 34 2.1.4 Ngụn ng mụ t phn cng VHDL 46 2.3 Gii thiu hóng Xilinx v cỏc cụng c lp trỡnh: 49 2.3.1 Hóng Xilinx 49 2.3.2 ISE 9.2 49 2.3.3 LogicCore 9.2 50 2.3.4 EDK 9.2 50 2.3.5 System Generator 9.2 50 PHN III - THC HIN X Lí NH S 52 3.1 B lc hng 52 3.1.1 Thc hin b lc hng 52 3.1.2 So sỏnh thut toỏn VHDL v MATLAB 56 3.2 X lý ng cu nh phõn 57 3.2 Tớch chp 60 3.2.1 Thc hin thut toỏn tớnh tớch chp 60 3.2.2 So sỏnh thut toỏn VHDL v MATLAB 62 KT LUN 64 TI LIU THAM KHO 66 APPENDIX - VHDL SOURCE FILES 67 Lờ Th Thanh - in T Vin Thụng 2007-2009 DANH MC CC HèNH V Hỡnh 1.1: Nhng kiu liờn kt gia cỏc im nh Hỡnh 1.2: Nhng kiu ng liờn kt gia cỏc im nh Hỡnh 1.3: Cỏc giai on chớnh x lý nh 10 Hỡnh 1.4: Cỏc thnh phn chớnh ca h thng x lý nh 14 Hỡnh 1.5: Vớ d tớch chp 18 Hỡnh 1.6: Kt qu ca phộp lc Gaussian vi ca s 3x3 21 Hỡnh 1.7: Kt qu thut toỏn dũ biờn 23 Hỡnh 1.8: Phõn ngng theo lc xỏm 24 Hỡnh 1.9: Loi b nhiu v khụi phc i tng bng quỏ trỡnh lm mnh lm y 26 Hỡnh 1.10: S thut toỏn gỏn nhón i tng 27 Hỡnh 2.1: Kin trỳc chung ca FPGA 34 Hỡnh 2.2: Mt Logic Block in hỡnh 35 Hỡnh 2.3: Configurable Logic Blocks 36 Hỡnh 2.4: Programmable Interconnect 37 Hỡnh 2.5: Cu trỳc cỏc thnh phn ca Spartan 3A 40 Hỡnh 2.6: Trỡnh t thit k h thng trờn nn FPGA 41 Hỡnh 2.7: Qui trỡnh thit k chip da trờn VHDL 48 Hỡnh 3.1: Thit k phn cng cho thut toỏn sp xp 53 Hỡnh 3.2: Cu trỳc thut toỏn b lc hng VHDL 55 Hỡnh 3.3: nh c x lý bi b lc hng cú hng l bng VHDL v MATLAB 56 Hỡnh 3.4: So sỏnh kt qu x lý nh bng VHDL v MATLAB 57 Hỡnh 3.5: nh c x lý bi thut toỏn lm mnh bng VHDL v MATLAB 58 Lờ Th Thanh - in T Vin Thụng 2007-2009 Hỡnh 3.6: So sỏnh kt qu x lý nh bng VHDL v MATLAB 58 Hỡnh 3.7: nh c x lý bi thut toỏn lm y bng VHDL v MATLAB 59 Hỡnh 3.8: So sỏnh kt qu x lý nh bng VHDL v MATLAB 59 Hỡnh 3.9: Thit k phn cng cho tớch chp 61 Hỡnh 3.10: Cu trỳc thut toỏn VHDL 62 Hỡnh 3.11: nh c x lý bi tớch chp bng VHDL v MATLAB 63 Hỡnh 3.12: So sỏnh kt qu x lý nh bng VHDL v MATLAB 63 Lờ Th Thanh - in T Vin Thụng 2007-2009 PHN M U X lý nh s l mt lnh vc ó v ang rt phỏt trin, cú liờn quan ti nhiu ngnh hc v hng nghiờn cu khỏc T nhng nm 1970 m nng lc tớnh toỏn ca mỏy tớnh ngy cng tr nờn mnh m hn, cỏc mỏy tớnh lỳc ny cú th x lý c nhng d liu ln nh cỏc hỡnh nh, cỏc on phim thỡ khỏi nim v k thut v x lý nh s ngy cng c nhc n v nghiờn cu nhiu hn cho ti ngy Ngy nay, ng dng ca x lý nh s ó tr nờn rt rng ln v a dng, len li vo mi lnh vc t quõn s, khoa hc, v tr, cho n y hc, sn xut, v t ng húa tũa nh X lý nh s cng cú liờn quan n nhiu ngnh khỏc nh: h thng tin hc, lý thuyt thụng tin, lý thuyt thng kờ, trớ tu nhõn to, nhn dng, v.v Trờn c s ú, tỏc gi ó la chn lun tt nghip ca mỡnh l X lý nh trờn nn FPGA vi mc ớch l nghiờn cu cỏc lnh vc x lý nh s ng thi, t nhng kin thc thu nhn c ú, tin hnh thc hin mt s thut toỏn x lý nh s trờn nn FPGA (hardware), sau ú so sỏnh, ỏnh giỏ vi cỏc nh c x lý bng MATLAB (software) Trong phn ca lun cp n nhng cỏc khỏi nim ca h thng x lý nh s, nhng ng dng v cỏc thnh phn ca nú ng thi tỏc gi cng trỡnh by c s kin thc ca x lý nh s Trong phn trỡnh by nhng khỏi nim c bn v chip kh trỡnh FPGA, hóng Xilinx v nhng cụng c lp trỡnh v phỏt trin h thng vi FPGA Lờ Th Thanh - in T Vin Thụng 2007-2009 Phn i sõu vo thc hin mt s thut toỏn x lý nh c bn bng ngụn ng lp trỡnh VHDL cho FPGA, so sỏnh vi kt qu x lý trờn mỏy tớnh bng MATLAB V cui cựng, tỏc gi tng kt nhng kt qu t c, nhng u im, nhc im ca gii phỏp, hiu qu ca gii phỏp v nhng hng phỏt trin Lờ Th Thanh - in T Vin Thụng 2007-2009 PHN I C S Lí THUYT X Lí NH S 1.1 Mt s khỏi nim c bn x lý nh s 1.1.1 Phn t nh - Pixel nh thc t l mt nh liờn tc v khụng gian v v giỏ tr sỏng cú th x lý nh bng mỏy tớnh cn thit phi tin hnh s hoỏ nh Trong quỏ trỡnh s hoỏ, ngi ta bin i tớn hiu liờn tc sang tớn hiu ri rc thụng qua quỏ trỡnh ly mu (ri rc húa v khụng gian) v lng hoỏ thnh phn giỏ tr m th v nguyờn tc bng mt thng khụng phõn bit c hai im k Trong quỏ trỡnh ny, ngi ta s dng khỏi nim Picture element m ta quen gi hay vit l Pixel - phn t nh õy cng cn phõn bit khỏi nim pixel hay cp n cỏc h thng ho mỏy tớnh trỏnh nhm ln ta tm gi khỏi nim pixel ny l pixel thit b Khỏi nim pixel thit b cú th xem xột nh sau: ta quan sỏt mn hỡnh (trong ch ho), mn hỡnh khụng liờn tc m gm nhiu im nh, gi l pixel Mi pixel gm mt cp to x, y v mu Cp to x, y to nờn phõn gii (resolution) Nh mn hỡnh mỏy tớnh cú nhiu loi vi phõn gii khỏc nhau: mn hỡnh CGA cú phõn gii l 320 x 200; mn hỡnh VGA l 640 x 350, Nh vy, mt nh l mt hp cỏc im nh Khi c s hoỏ, nú thng c biu din bi bng hai chiu I(n,p): n dũng v p ct Ta núi nh gm n x p pixels Ngi ta thng kớ hiu I(x,y) ch mt pixel Thng giỏ tr ca n chn bng p v bng 256 Hỡnh 1.2 cho ta thy vic Lờ Th Thanh - in T Vin Thụng 2007-2009 biu din mt nh vi phõn gii khỏc Mt pixel cú th lu tr trờn 1, 4, hay 24 bit 1.1.2 Pixel v cỏc lõn cn Nh ó bit, mi khung nh c mụ t di dng ma trn chiu, ú mi phn t ca ma trn tng ng vi mc xỏm ca im nh (pixel) Mi im nh ny cú cỏc lõn cn xung quanh Nu hin th mi pixel di dng mt ụ vuụng, mi im cú chung biờn vi im lõn cn, v cú chung gúc vi im lõn cn khỏc Hai im lõn cn gi l "liờn kt 4" nu chỳng cú chung biờn vi nhau, v "liờn kt 8" nu chung gúc v chung biờn vi a) Liờn kt b) Liờn kt Hỡnh 1.1: Nhng kiu liờn kt gia cỏc im nh 1.1.3 ng liờn kt ng liờn kt l ng ni t pixel [i1, j1] n pixel, [in, jn], qua mt chui cỏc pixel [i1, j1], [i2, j2], , [ik, jk] , ú mi pixel liờn kt vi pixel trc nú Ta cú ng liờn kt hoc liờn kt nu cỏc pixel liờn kt hoc vi Lờ Th Thanh - in T Vin Thụng 2007-2009 - Company: Engineer: - Create Date: 01:20:18 02/23/2010 Design Name: Module Name: ro_filt_3x3 - Behavioral Project Name: Target Devices: Tool versions: Description: - Dependencies: - Revision: Revision 0.01 - File Created Additional Comments: library IEEE; use IEEE.std_logic_1164.all; entity ro_filt_3x3 is generic ( vwidth: integer:=8; order: integer:=4; num_cols: integer:=128; num_rows: integer:=128 ); port ( Clk : in std_logic; 109 Lờ Th Thanh - in T Vin Thụng 2007-2009 RSTn : in std_logic; D : in std_logic_vector(vwidth-1 downto 0); Dout : out std_logic_vector(vwidth-1 downto 0); DV : out std_logic ); end ro_filt_3x3; architecture ro_filt_3x3 of ro_filt_3x3 is component sort_3x3 generic ( vwidth: integer:=8 ); port ( Clk : in std_logic; RSTn : in std_logic; w11 : in std_logic_vector((vwidth-1) downto 0); w12 : in std_logic_vector((vwidth-1) downto 0); w13 : in std_logic_vector((vwidth-1) downto 0); w21 : in std_logic_vector((vwidth-1) downto 0); w22 : in std_logic_vector((vwidth-1) downto 0); w23 : in std_logic_vector((vwidth-1) downto 0); w31 : in std_logic_vector((vwidth-1) downto 0); w32 : in std_logic_vector((vwidth-1) downto 0); w33 : in std_logic_vector((vwidth-1) downto 0); DVw : in std_logic; DVs : out std_logic; s1 : out std_logic_vector(vwidth-1 downto 0); s2 : out std_logic_vector(vwidth-1 downto 0); s3 : out std_logic_vector(vwidth-1 downto 0); s4 : out std_logic_vector(vwidth-1 downto 0); 110 Lờ Th Thanh - in T Vin Thụng 2007-2009 s5 : out std_logic_vector(vwidth-1 downto 0); s6 : out std_logic_vector(vwidth-1 downto 0); s7 : out std_logic_vector(vwidth-1 downto 0); s8 : out std_logic_vector(vwidth-1 downto 0); s9 : out std_logic_vector(vwidth-1 downto 0) ); end component sort_3x3; signal w11: std_logic_vector((vwidth-1) downto 0); signal w12: std_logic_vector((vwidth-1) downto 0); signal w13: std_logic_vector((vwidth-1) downto 0); signal w21: std_logic_vector((vwidth-1) downto 0); signal w22: std_logic_vector((vwidth-1) downto 0); signal w23: std_logic_vector((vwidth-1) downto 0); signal w31: std_logic_vector((vwidth-1) downto 0); signal w32: std_logic_vector((vwidth-1) downto 0); signal w33: std_logic_vector((vwidth-1) downto 0); signal DVw: std_logic; signal DVs: std_logic; signal s1: std_logic_vector(vwidth-1 downto 0); signal s2: std_logic_vector(vwidth-1 downto 0); signal s3: std_logic_vector(vwidth-1 downto 0); signal s4: std_logic_vector(vwidth-1 downto 0); signal s5: std_logic_vector(vwidth-1 downto 0); signal s6: std_logic_vector(vwidth-1 downto 0); signal s7: std_logic_vector(vwidth-1 downto 0); signal s8: std_logic_vector(vwidth-1 downto 0); signal s9: std_logic_vector(vwidth-1 downto 0); component window_3x3 generic ( 111 Lờ Th Thanh - in T Vin Thụng 2007-2009 vwidth: integer:=8 ); port ( Clk : in std_logic; RSTn : in std_logic; D : in std_logic_vector(vwidth-1 downto 0); w11 w12 w13 w21 w22 w23 : out std_logic_vector(vwidth-1 downto 0); : out std_logic_vector(vwidth-1 downto 0); : out std_logic_vector(vwidth-1 downto 0); : out std_logic_vector(vwidth-1 downto 0); : out std_logic_vector(vwidth-1 downto 0); : out std_logic_vector(vwidth-1 downto 0); w31 : out std_logic_vector(vwidth-1 downto 0); w32 : out std_logic_vector(vwidth-1 downto 0); w33 : out std_logic_vector(vwidth-1 downto 0); DV : out std_logic:='0' ); end component window_3x3; component rc_counter generic ( num_cols: integer:=128; num_rows: integer:=128 ); port ( Clk : in std_logic; RSTn : in std_logic; En : in std_logic; ColPos : out integer; RowPos : out integer ); 112 Lờ Th Thanh - in T Vin Thụng 2007-2009 end component rc_counter; signal ColPos: integer:=0; signal RowPos: integer:=0; signal ColPos_c: integer:=0; corrected positions signal RowPos_c: integer:=0; signal rt1: integer:=0; signal rt2: integer:=0; signal rt3: integer:=0; signal rt4: integer:=0; signal rt5: integer:=0; signal rt6: integer:=0; signal rt7: integer:=0; signal rt8: integer:=0; signal rt9: integer:=0; signal rt10: integer:=0; signal rt11: integer:=0; signal rt12: integer:=0; signal rt13: integer:=0; signal rt14: integer:=0; signal rt15: integer:=0; signal rt16: integer:=0; signal flag: std_logic:='0'; begin sort_3x3x: sort_3x3 generic map ( vwidth => ) 113 Lờ Th Thanh - in T Vin Thụng 2007-2009 port map ( Clk => Clk, RSTn => RSTn, w11 => w11, w12 => w12, w13 => w13, w21 w22 w23 w31 w32 w33 => w21, => w22, => w23, => w31, => w32, => w33, DVw => DVw, DVs => DVs, s1 => s1, s2 => s2, s3 => s3, s4 => s4, s5 => s5, s6 => s6, s7 => s7, s8 => s8, s9 => s9 ); window_3x3x: window_3x3 generic map ( vwidth => ) port map ( Clk => Clk, 114 Lờ Th Thanh - in T Vin Thụng 2007-2009 RSTn => RSTn, D => D, w11 => w11, w12 => w12, w13 => w13, w21 => w21, w22 => w22, w23 => w23, w31 => w31, w32 => w32, w33 => w33, DV => DVw ); rc_counterx: rc_counter generic map ( num_cols => 128, num_rows => 128 ) port map ( Clk => Clk, RSTn => RSTn, En => RSTn, ColPos => ColPos, RowPos => RowPos ); ro_filt_proc: process(RSTn,Clk) begin if RSTn = '0' then ColPos_c
Ngày đăng: 22/07/2017, 23:03
Xem thêm: Nghiên cứu về xử lý ảnh trên nền FPGA