1. Trang chủ
  2. » Kỹ Thuật - Công Nghệ

Nghiên cứu về xử lý ảnh trên nền FPGA

125 547 2

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 125
Dung lượng 2,2 MB

Nội dung

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

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w