基于界面GUI的圖像處理軟件綜合設(shè)計(jì)(基于Matlab )_第1頁
基于界面GUI的圖像處理軟件綜合設(shè)計(jì)(基于Matlab )_第2頁
基于界面GUI的圖像處理軟件綜合設(shè)計(jì)(基于Matlab )_第3頁
基于界面GUI的圖像處理軟件綜合設(shè)計(jì)(基于Matlab )_第4頁
基于界面GUI的圖像處理軟件綜合設(shè)計(jì)(基于Matlab )_第5頁
已閱讀5頁,還剩18頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、河海大學(xué)計(jì)算機(jī)與信息學(xué)院(常州)matlab課程設(shè)計(jì)報(bào)告專業(yè)、學(xué)號(hào) 學(xué)生姓名 指導(dǎo)教師 完成時(shí)間 摘要數(shù)字圖像處理技術(shù)是20世紀(jì)60年代發(fā)展起來的一門新興學(xué)科,隨著圖像處理理論和方法的逐步完善,使得數(shù)字圖像處理技術(shù)在各個(gè)領(lǐng)域得到了廣泛的應(yīng)用,并顯示出廣闊的應(yīng)用前景。matlab既是一種直觀、高效的計(jì)算機(jī)語言,同時(shí)又是一個(gè)科學(xué)計(jì)算平臺(tái),它為數(shù)據(jù)分析和數(shù)據(jù)可視化、算法和應(yīng)用程序開發(fā)提供了核心的數(shù)學(xué)和高級(jí)圖形工具。matlab集成了功能強(qiáng)大的工具箱,matlab語言的語法特性與c語言極為相似,且更加簡(jiǎn)單,并且matlab語言可移植性好、擴(kuò)展性強(qiáng),再加上其中有豐富的圖像處理函數(shù),使得它在我們今后的學(xué)習(xí)

2、和工作有越來越重要的作用。本報(bào)告主要描述了簡(jiǎn)單的基于界面gui的圖像處理軟件綜合設(shè)計(jì)以及嵌入式設(shè)計(jì):基于icetek-dm642-p4 的嵌入式dsp圖像處理算法實(shí)現(xiàn)。這些都比較簡(jiǎn)單,主要為今后的學(xué)習(xí)打下基礎(chǔ)。關(guān)鍵字:matlab、界面gui處理、數(shù)字圖像處理目錄摘要-2設(shè)計(jì)一、基于界面gui的圖像處理軟件綜合設(shè)計(jì)(基于matlab )-4一、設(shè)計(jì)目的 -4二、設(shè)計(jì)要求 -4三、設(shè)計(jì)內(nèi)容 -4四、總體設(shè)計(jì) -4五、具體設(shè)計(jì) -5圖像的讀取與包存 -5圖像轉(zhuǎn)化為灰度圖像 -6圖像直方圖統(tǒng)計(jì)和直方圖均衡 -6加入各種噪聲,并通過幾種濾波算法實(shí)現(xiàn)去噪-7邊緣檢測(cè)-12rgb圖像處理-14圖像銳化-1

3、5六、結(jié)果分析 -17設(shè)計(jì)二、嵌入式設(shè)計(jì):基于icetek-dm642-p4 的嵌入式dsp圖像理算法實(shí)現(xiàn)-18一、設(shè)計(jì)目的-18二、設(shè)計(jì)內(nèi)容-18三、具體設(shè)計(jì)-18熟悉tms320c6000軟件開發(fā)過程-18了解邊緣檢測(cè)的算法和用途,利用sobel 算子進(jìn)行邊緣檢測(cè),實(shí)現(xiàn)基于sobel算子的邊緣檢測(cè)方法-20四、實(shí)驗(yàn)結(jié)果-22心得體會(huì)-22 設(shè)計(jì)一、基于界面gui的圖像處理軟件綜合設(shè)計(jì)(基于matlab )一、 設(shè)計(jì)目的綜合運(yùn)用matlab工具箱實(shí)現(xiàn)圖像處理的gui程序設(shè)計(jì)。二、 設(shè)計(jì)要求1、 熟悉掌握matlab的程序設(shè)計(jì)方法。2、 掌握matlab gui程序設(shè)計(jì)。3、 學(xué)習(xí)和熟悉mat

4、lab圖像處理工具箱。4、 學(xué)會(huì)運(yùn)用matlab圖像處理工具箱對(duì)圖像分析。三、 設(shè)計(jì)內(nèi)容設(shè)計(jì)一個(gè)軟件,實(shí)現(xiàn)功能包括圖像的讀取、存儲(chǔ)、顯示、圖像轉(zhuǎn)換、加噪、去噪、增強(qiáng)、邊緣檢測(cè)、直方圖統(tǒng)計(jì)等。四、 總體設(shè)計(jì)因?yàn)槲覀円獙W(xué)習(xí)的是運(yùn)用matlab工具箱設(shè)計(jì)的方法和步驟,再加上能力有限,所以該軟件實(shí)現(xiàn)的功能較簡(jiǎn)單,其菜單如下:設(shè)計(jì)完成時(shí)菜單界面如下:五、 具體設(shè)計(jì)圖像的讀取與保存1、 打開設(shè)計(jì)的時(shí)候,通過打開一個(gè)對(duì)話框來實(shí)現(xiàn),選擇uigetfile函數(shù)來實(shí)現(xiàn),uigetfile函數(shù)顯示一個(gè)打開文件的對(duì)話框,該對(duì)話框自動(dòng)列出當(dāng)前路徑下的目錄和文件。其使用方法如下:global im %定義一個(gè)全局變量im

5、filename,pathname=uigetfile(*.*;*.bmp;*.tif;*.png,select picture); %選擇圖片路徑str=pathname filename; %合成路徑+文件名im=imread(str); %讀取圖片axes(handles.axes1); %使用第一個(gè)axesimshow(im); %顯示圖片2、 保存同樣通過打開一個(gè)對(duì)話框來實(shí)現(xiàn),選擇uiputfile函數(shù)來實(shí)現(xiàn)global bw %定義處理后的圖片bw這個(gè)全局變量filename,pathname,filterindex=uiputfile(*.bmp;*.tif;*.png,save

6、 picture);存儲(chǔ)圖片路徑if filterindex=0return %如果取消操作,返回elsestr=pathname filename; %合成路徑+文件名axes(handles.axes2); %使用第二個(gè)axesimwrite(bw,str); %寫入圖片信息,即保存圖片end3、 退出這就簡(jiǎn)單了,程序如下:clc;close all;close(gcf);圖像轉(zhuǎn)化為灰度圖像。由于在matlab中較多的圖像處理函數(shù)支持對(duì)灰度圖像進(jìn)行處理,故對(duì)圖像進(jìn)行灰度轉(zhuǎn)化十分必要??衫胷gb2gray(x)函數(shù)對(duì)其他圖像進(jìn)行灰度圖像的轉(zhuǎn)化。轉(zhuǎn)化實(shí)例如下:實(shí)現(xiàn)程序段如下:global t

7、axes(handles.axes2);t=getimage;x=rgb2gray(handles.img); imshow(x);handles.img=x;guidata(hobject,handles); p=inputdlg(prompt,input,1,defans); p1=str2num(p1); f=imresize(handles.img,p1,bilinear); imshow(f); handles.img=f; guidata(hobject,handles);end圖像直方圖統(tǒng)計(jì)和直方圖均衡。 (1)通過histeq(x)函數(shù)實(shí)現(xiàn)直方圖均衡。因?yàn)榇撕瘮?shù)只能對(duì)灰度圖像進(jìn)

8、行直方圖均衡。故應(yīng)先將彩圖轉(zhuǎn)為灰度圖像。 在上一步的基礎(chǔ)上對(duì)第二幅圖進(jìn)行直方圖均衡:直方圖均衡實(shí)現(xiàn)程序段如下:% - executes on button press in pushbutton7.function pushbutton7_callback(hobject, eventdata, handles)% hobject handle to pushbutton7 (see gcbo)% eventdata reserved - to be defined in a future version of matlab% handles structure with handles an

9、d user data (see guidata)global taxes(handles.axes2);t=getimage;h=histeq(handles.img); imshow(h);handles.img=h;guidata(hobject,handles); 關(guān)鍵部分:通過 h=histeq(handles.img)進(jìn)行直方圖均衡 (2)直方圖統(tǒng)計(jì)。通過利用imhist(x)函數(shù)來實(shí)現(xiàn)直方圖統(tǒng)計(jì)。% - executes on button press in pushbutton8.function pushbutton8_callback(hobject, eventdata,

10、 handles)% hobject handle to pushbutton8 (see gcbo)% eventdata reserved - to be defined in a future version of matlab% handles structure with handles and user data (see guidata)axes(handles.axes2);x=imhist(handles.img); %直方圖統(tǒng)計(jì)x1=x(1:10:256);horz=1:10:256;bar(horz,x1);axis(0 255 0 15000);set(handles.

11、axes2,xtick,0:50:255);set(handles.axes2,ytick,0:2000:15000);注意:橫縱坐標(biāo)的范圍應(yīng)選取適當(dāng),否則,統(tǒng)計(jì)圖表有可能超出范圍。加入各種噪聲,并通過幾種濾波算法實(shí)現(xiàn)去噪。(1)加入噪聲。通過imnoise(i,type,parameters)來加入各種噪聲。加入椒鹽噪聲加入高斯噪聲:加入乘性噪聲:實(shí)現(xiàn)程序段如下:function uipanel4_selectionchangefcn(hobject, eventdata, handles)% hobject handle to uipanel4 (see gcbo)% eventdata

12、reserved - to be defined in a future version of matlab% handles structure with handles and user data (see guidata)global tstr=get(hobject,string);axes(handles.axes2);switch str case 椒鹽噪聲 t=getimage; prompt=輸入椒鹽噪聲參數(shù)1:; defans=0.02; p=inputdlg(prompt,input,1,defans); p1=str2num(p1); f=imnoise(handles.

13、img,salt & pepper,p1); imshow(f); handles.img=f; guidata(hobject,handles); case 高斯噪聲 t=getimage; prompt=輸入高斯噪聲1:,輸入高斯噪聲2; defans=0,0.02; p=inputdlg(prompt,input,1,defans); p1=str2num(p1); p2=str2num(p2); f=imnoise(handles.img,gaussian,p1,p2); imshow(f); handles.img=f; guidata(hobject,handles); case

14、乘性噪聲 t=getimage; prompt=輸入乘性噪聲1:; defans=0.02; p=inputdlg(prompt,input,1,defans); p1=str2num(p1); f=imnoise(handles.img,speckle,p1); imshow(f); handles.img=f; guidata(hobject,handles); end(2)濾除噪聲(高斯噪聲)。(因?yàn)橹荒軐?duì)灰度圖濾波,所以應(yīng)先轉(zhuǎn)換為灰度圖)濾波前中值濾波后低通濾波器濾波后實(shí)現(xiàn)程序段如下:中值濾波:global im;global y;y2=double(y)/255;medfilt=me

15、dfilt2(y2,3 3);axes(handles.axes2);imshow(medfilt,);低通濾波:global imglobal ym n=size(im);f=fft2(y);fftshift(f);dcut=100;d1=250;for u=1:m for v=1:n d(u,v)=sqrt(u2+v2); butterh(u,v)=1/(1+(sqrt(2)-1)*(d(u,v)/dcut)2); endend butterg=butterh.*f; butterfiltered=ifft2(butterg);axes(handles.axes2);imshow(butt

16、erfiltered,)邊緣檢測(cè)robert算法檢測(cè):sobel算法檢測(cè):prewitt算法檢測(cè):log算法檢測(cè):canny算子檢測(cè):實(shí)現(xiàn)程序:robert算子:global imglobal cwaxes(handles.axes2);cw=edge(im ,robert);imshow(cw);sobel算子:global imglobal dwaxes(handles.axes2);dw=edge(im ,sobel);imshow(dw);prewitt算子:global imglobal dwaxes(handles.axes2);dw=edge(im ,prewitt);imsho

17、w(dw);log算子:global imglobal dwaxes(handles.axes2);dw=edge(im ,log);imshow(dw);canny算子:global imglobal dwaxes(handles.axes2);dw=edge(im ,canny);imshow(dw);rgb圖像處理轉(zhuǎn)換為索引圖:轉(zhuǎn)換為二值圖:實(shí)現(xiàn)程序:索引圖像:global imy2=rgb2ind(im,128);axes(handles.axes2);imshow(y2);二值圖像:global imwm=im2bw(im,0.4);axes(handles.axes2);imsho

18、w(wm);圖像銳化sobel算子濾波:拉氏算子濾波:空域高通濾波:頻域高通濾波:實(shí)現(xiàn)程序:sobel算子濾波:global imh=fspecial(sobel);k=filter2(h,im);axes(handles.axes2);imshow(k);拉氏算子濾波:global imam=double(im);h=0 1 0,1 -4 1,0 1 0;j=conv2(am,h,same);k=am-j;axes(handles.axes2);imshow(k);空域高通濾波:global imj=im2double(im)h=-1 -1 -1,-1 9 -1,-1 -1 -1;k=con

19、v2(j,h,same);axes(handles.axes2);imshow(k);頻域高通濾波:global imglobal ym n=size(im);f=fft2(y);fftshift(f);dcut=100;d1=250;for u=1:m for v=1:n d(u,v)=sqrt(u2+v2); butterh(u,v)=1/(1+(sqrt(2)-1)*(dcut/d(u,v)2); endend butterg=butterh.*f; butterfiltered=ifft2(butterg);axes(handles.axes2);imshow(butterfilter

20、ed,)六、結(jié)果分析軟件測(cè)試基本成功,課題所要求的功能均能較好實(shí)現(xiàn)。但一些功能只支持灰度圖像的處理。其中值得一提的是在濾波處理中的低通濾波與高通濾波的效果。由于一般圖像中含有較多的低頻信息成分高頻成分較少,通過低通濾波后,噪聲以及高頻成分被濾除,圖像雖有少量失真,略顯模糊,但尚可辨識(shí)。但若是通過高通濾波后,大量的有效低頻信息被濾除,圖像嚴(yán)重失真,不可辨識(shí)。設(shè)計(jì)二、嵌入式設(shè)計(jì):基于icetek-dm642-p4 的嵌入式dsp圖像處理算法實(shí)現(xiàn)一、 設(shè)計(jì)目的 掌握code composer studio2.2 的安裝和配置,熟悉tms320c6000軟件開發(fā)過程,熟悉怎樣運(yùn)用該軟件來做相關(guān)的實(shí)際圖

21、像處理。二、設(shè)計(jì)內(nèi)容掌握code composer studio2.2 的安裝和配置,熟悉tms320c6000軟件開發(fā)過程:創(chuàng)建工程和管理工程、編譯和調(diào)試、使用觀察窗口、了解圖形功能(實(shí)驗(yàn)書p40-45);了解邊緣檢測(cè)的算法和用途,利用sobel 算子進(jìn)行邊緣檢測(cè),實(shí)現(xiàn)基于sobel算子的邊緣檢測(cè)方法(實(shí)驗(yàn)書p106-108) ; 在的基礎(chǔ)上,修改核心代碼,調(diào)試實(shí)現(xiàn)基于prewitt算子的邊緣檢測(cè)方法。三、具體設(shè)計(jì)熟悉tms320c6000軟件開發(fā)過程1. 實(shí)驗(yàn)準(zhǔn)備. 連接實(shí)驗(yàn)設(shè)備,連接220v 供電電源連線,請(qǐng)使用有質(zhì)量保證的220v 電源插座。. 打開實(shí)驗(yàn)箱上的開關(guān),給實(shí)驗(yàn)箱供電。上電正

22、常時(shí),icetek-dm642-p4 評(píng)估板的上電指示燈常亮,復(fù)位指示燈熄滅。注意:如果在icetek-dm642-p4 評(píng)估板上電后,指示燈的亮滅狀態(tài)不對(duì),請(qǐng)立即關(guān)閉實(shí)驗(yàn)箱電源開關(guān),檢查設(shè)備。打開液晶顯示屏電源開關(guān),此時(shí)液晶顯示屏上應(yīng)顯示條狀彩條。如果沒有彩條顯示,請(qǐng)按下板上的s3 復(fù)位按鈕,再次觀察液晶顯示屏是否有彩條輸出。提示:如果使用自配的圖像輸入設(shè)備和圖像輸出設(shè)備,請(qǐng)務(wù)必保證各設(shè)備與dm642-p4評(píng)估板的供電電源共地。如果不共地,過大的電壓差,將擊穿dm642 評(píng)估板。2. 設(shè)置code composer studio2.2 在硬件仿真(emulator)方式下運(yùn)行請(qǐng)參照第二部分,

23、第二章操作。3. 啟動(dòng)code composer studio2.2雙擊桌面上“ccs 2(c6000)”,啟動(dòng)code composer studio2.2;如果無法進(jìn)入ccs軟件,請(qǐng)參照第二部分,第三章操作,排除問題。4. 創(chuàng)建工程. 創(chuàng)建新的工程文件:選擇菜單“project”的“new”項(xiàng);在“project creation”對(duì)話框中,在“project”項(xiàng)輸入useccs ; 單擊“ location ” 項(xiàng)末尾的瀏覽按鈕, 改變目錄到c:icetek-dm642-p4lab501-useccs,單擊“ok”;單擊“完成”;這時(shí)建立的是一個(gè)空的工程文件; 展開主窗口左側(cè)工程管理窗口

24、中“ projects ” 下新建立的“useccs .pjt”,其中各項(xiàng)均為空。提 示:如果要?jiǎng)?chuàng)建庫(kù)文件,只需要在建立新工程時(shí),將“project”中的選項(xiàng)更改為“l(fā)ibrary (.lib)”即可。. 在工程文件中添加程序文件:選擇菜單“project”的“add files to project”項(xiàng);在“add files to project”對(duì)話框中選擇文件目錄為lab501-useccs,改變文件類型為“c source files(*.c;*.ccc)”,選擇顯示出來的文件“volum.c”;重復(fù)上述各步驟,添加volume.cmd、load.asm 和vectors.asm 文

25、件到useccs 工程中(如沒有找到相應(yīng)的文件,請(qǐng)選擇改變文件類型來找);添加c:tic6000cgtoolslibrts6400.lib。. 編譯連接工程:選擇菜單“project”的“rebuild all”項(xiàng);注意編譯過程中ccs 主窗口下部的“build”提示窗中顯示編譯信息,最后將給出錯(cuò)誤和警告的統(tǒng)計(jì)數(shù)。5. 編輯修改工程中的文件. 查看工程文件展開ccs 主窗口左側(cè)工程管理窗中的工程各分支,可以看到“useccs.pjt”工程中包含“volume.h”、“rts6400.lib”、“volume.c”和“volume.cmd”等文件,其中“volume.h”為程序在編譯時(shí)根據(jù)程序中

26、的“include”語句自動(dòng)加入的。. 查看源文件雙擊工程管理窗中的“volume.c”文件,可以查看程序內(nèi)容。雙擊工程管理窗中的“volume.h”文件,打開此文件顯示,可以看到其中有主程序中要用到的一些宏定義如“buf_size”等?!皏olume.cmd”文件定義程序所放置的位置,此例中描述了dm642 的存儲(chǔ)器資源,指定了程序和數(shù)據(jù)在內(nèi)存中的位置。. 編輯修改源文件打開“volume.c”,找到“main()”主函數(shù),將語句“input = &inp_buffer0;”最后的分號(hào)去掉,這樣程序中就出現(xiàn)了一個(gè)語法錯(cuò)誤;重新編譯連接工程,可以發(fā)現(xiàn)編譯信息窗口出現(xiàn)發(fā)現(xiàn)錯(cuò)誤的提示,雙擊紅色錯(cuò)誤

27、提示,ccs 自動(dòng)轉(zhuǎn)到程序中出錯(cuò)的地方;將語句修改正確(這里是將語句末尾的分號(hào)加上);重新編譯;注意,重新編譯時(shí)修改的文件被cc 系統(tǒng)自動(dòng)保存。. 修改工程文件的設(shè)置選擇“project”菜單中的“build options”項(xiàng),打開“build options for useccs.pjt”對(duì)話框,選擇“l(fā)inker”卡片,在“stack size”項(xiàng)后輸入1024;單擊“確定”完成設(shè)置;通過此設(shè)置,重新編譯后,程序中的堆棧的尺寸被設(shè)置成1024 個(gè)字。6. 基本調(diào)試功能. 執(zhí)行fileload program , 在隨后打開的對(duì)話框中選擇剛剛建立的lab501-useccsdebuguse

28、ccs.out 文件。. 在項(xiàng)目瀏覽窗口中,雙擊volume.c 激活這個(gè)文件,移動(dòng)光標(biāo)到main()行上,右擊鼠標(biāo)選擇toggle breakpoint 或按f9 設(shè)置斷點(diǎn)。. 選擇debugrun 或按f5 運(yùn)行程序,程序會(huì)自動(dòng)停在main()函數(shù)頭上。 按f10 執(zhí)行到write_buffer()函數(shù)上。 再按f8,程序?qū)⑥D(zhuǎn)到write_buffer 函數(shù)中運(yùn)行。 此時(shí),為了返回主函數(shù),按shift-f7 完成write_buffer 函數(shù)的執(zhí)行。 再次執(zhí)行到write_buffer 一行,按f10 執(zhí)行程序,對(duì)比與f8 執(zhí)行的不同。注意: 在執(zhí)行c 語言的程序時(shí),為了快速的運(yùn)行到主函數(shù)

29、調(diào)試自己的代碼,可以使用debuggo main 命令,上述實(shí)驗(yàn)中的使用的是較為繁瑣的一種方法。7. 使用觀察窗口. 執(zhí)行viewwatch window 打開觀察窗口。. 在volume.c 中,選中任意一個(gè)變量,右擊鼠標(biāo),選擇“quick watch”,ccs 將打開quickwatch 窗口并顯示選中的變量。. 在volume.c 中,選中任意一個(gè)變量,右擊鼠標(biāo),選擇“add to watch window”,ccs將把變量添加到觀察窗口并顯示選中的變量值。. 在觀察窗口中雙擊變量,則彈出修改變量窗口,此時(shí),可以在這個(gè)窗口中改變程序變量的值。. 把str 變量加到觀察窗口中,點(diǎn)擊變量左邊

30、的”+”,觀察窗口可以展開結(jié)構(gòu)變量,并且顯示結(jié)構(gòu)變量的每個(gè)元素的值。. 把str 變量加到觀察窗口中;執(zhí)行程序進(jìn)入write_buffer 函數(shù),此時(shí)num 函數(shù)超出了作用范圍,可以利用call stack 窗口察看在不同作用范圍的變量: 執(zhí)行viewcall stack 打開堆棧窗口。 雙擊堆棧窗口的main()選項(xiàng),此時(shí)可以察看num 變量的值。8. 文件輸入/輸出這一節(jié)介紹如何從pc 機(jī)上加載數(shù)據(jù)到目標(biāo)機(jī)上??捎糜谑褂靡阎臄?shù)據(jù)流測(cè)試算法的正確性。在完成下面的操作以前,先介紹code composer studio 的probe(探針)斷點(diǎn),這種斷點(diǎn)允許用戶在指定位置提取/注入數(shù)據(jù)。pr

31、obe 斷點(diǎn)可以設(shè)置在程序的任何位置,.當(dāng)程序運(yùn)行到probe 斷點(diǎn)時(shí),與probe 斷點(diǎn)相關(guān)的事件將會(huì)被觸發(fā),當(dāng)事件結(jié)束后,程序會(huì)繼續(xù)執(zhí)行。在這一節(jié)里,probe 斷點(diǎn)觸發(fā)的事件是:從pc 機(jī)的數(shù)據(jù)文件加載數(shù)據(jù)到目標(biāo)系統(tǒng)的緩沖區(qū)中。. 在真實(shí)的系統(tǒng)中,read_signals 函數(shù)用于讀取a/d 模塊的數(shù)據(jù)并放到dsp 緩沖區(qū)中。在這里,代替a/d 模塊完成這個(gè)工作的是probe 斷點(diǎn)。當(dāng)執(zhí)行到函數(shù)read_signals時(shí),probe 斷點(diǎn)完成這個(gè)工作。 在程序行read_signals(int *input)上單擊鼠標(biāo)右鍵,選擇“toggle breakpoint”,設(shè)置軟件斷點(diǎn)。 單擊

32、鼠標(biāo)右鍵,選擇“toggle probe point”,設(shè)置probe 斷點(diǎn)。. 執(zhí)行filefile i/o,打開對(duì)話框。. 點(diǎn)擊add file 把sine2.dat 文件加到對(duì)話框中。. 完成設(shè)置: 在address 中,輸入inp_buffer 在length 中,輸入100 保證warp around 被選中;. 關(guān)聯(lián)事件和probe 斷點(diǎn): 點(diǎn)擊add probe point 按鈕,打開對(duì)話框; 點(diǎn)擊probe point 列表中的內(nèi)容,使之被選中; 在connect 中選擇sine2.dat 文件; 點(diǎn)擊replace 按鈕確認(rèn)設(shè)置; 點(diǎn)擊“確定”關(guān)閉對(duì)話框。. 點(diǎn)擊“確定”關(guān)閉

33、對(duì)話框,此時(shí),已經(jīng)配置好了probe 斷點(diǎn)和與之關(guān)聯(lián)的事件.進(jìn)一步的結(jié)果在下面實(shí)驗(yàn)中顯示了解邊緣檢測(cè)的算法和用途,利用sobel 算子進(jìn)行邊緣檢測(cè),實(shí)現(xiàn)基于sobel算子的邊緣檢測(cè)方法1 把數(shù)據(jù)從視頻通道通過一維方式傳送到片內(nèi)ram中并作sobel邊緣提取算法。我們只對(duì)攝像頭采集的一塊數(shù)據(jù)進(jìn)行sobel邊緣提取。采用一維edma傳送方式,每一次傳送采集的一行中的部分?jǐn)?shù)據(jù)(dat_copy()函數(shù))。在pal制式下,先把一行數(shù)據(jù)放到nmemtemp數(shù)組中,比如我們要把從144行到432行,從180列到435列的圖像進(jìn)行sobel邊緣提取,最后把變換后的數(shù)據(jù)輸出到顯示緩沖區(qū)。 unsigned c

34、har nmemtemp720;for ( i = 0; i frame.ifrm.y1+i*caplinepitch,nmemtemp,numpixels); dat_wait(m_nid); if ( i144 & iframe.ifrm.y1+i*dislinepitch,numpixels);因?yàn)閟obel算法需要三行數(shù)據(jù),我們可以開辟一個(gè)可以存放三行數(shù)據(jù)的緩沖區(qū),通過指針的交換把從視頻通道過來的數(shù)據(jù)分別放到緩沖區(qū)中。保存的三行圖像使用翻卷的緩沖區(qū)管理,三個(gè)變量分別指示當(dāng)前使用的y行、y-1行和y-2行在緩沖區(qū)中的起始偏移量。我們可以這樣來做:輪流往三塊緩存區(qū)拷貝數(shù)據(jù)。只要拷貝的指針變

35、化就可以。在我們拷貝當(dāng)前這一塊的時(shí)候,已經(jīng)拷貝的另外兩塊數(shù)據(jù)依然沒有變化,所以我們就可以實(shí)現(xiàn)三塊數(shù)據(jù)保存采集圖像中的相鄰的三行數(shù)據(jù)。如下:緩沖區(qū)1clines0-255緩沖區(qū)2clines256-512緩沖區(qū)3clines513-768三個(gè)指針*pimg1,*pimg2,*pimg3分別輪流指向三個(gè)緩沖區(qū)。 m_noffset1=0; m_noffset2=256; m_noffset3=512;unsigned char clines256*3;void sobel() unsigned int m_nid;m_nid=dat_copy(nmemtemp+180,clines+m_noffset3,256);pimg1=clines; pimg1+=m_noffset1;pimg2=clines; pimg2+=m_noffset2;pimg3=clines; pimg3+=m_noffset3;x1=(*pimg1); pimg1+; x2=(*pimg1); pimg1+;x4=(*pimg2); pimg2+; x5=(*pimg2); pimg2+;x7=(*pimg3); pimg3+; x8=(*pimg3); pimg3+; for ( mi=0;mi256;mi+,pimg1+,pimg2+,pimg3+ ) x3=(*pimg1); x6=(*pimg

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論