版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、<p><b> 目錄</b></p><p> 1.課程設(shè)計(jì)的主要任務(wù)及目的1</p><p> 1.設(shè)計(jì)的主要任務(wù)1</p><p> 2.圖像處理簡(jiǎn)介2</p><p> 1.數(shù)字圖像處理發(fā)展概述2</p><p> 2.圖像處理技術(shù)2</p>
2、<p> 3.圖像處理的內(nèi)容3</p><p> 3.GUI及HIS模型簡(jiǎn)介4</p><p><b> 1.GUI簡(jiǎn)介4</b></p><p> 2.HIS模型簡(jiǎn)介4</p><p> 4.GUI界面設(shè)計(jì)7</p><p><b> 6.仿真結(jié)果10
3、</b></p><p><b> 6.總結(jié)12</b></p><p><b> 參考文獻(xiàn)13</b></p><p><b> 附錄14</b></p><p> 圖像HSI調(diào)整的MATLAB實(shí)現(xiàn)</p><p> 1.課
4、程設(shè)計(jì)的主要任務(wù)及目的</p><p><b> 1.設(shè)計(jì)的主要任務(wù)</b></p><p> 對(duì)24bits彩色圖像的顏色,使用HSI顏色模型,來對(duì)其進(jìn)處理。</p><p> 設(shè)計(jì)圖形界面(GUI)程序,使用三個(gè)滑動(dòng)條實(shí)現(xiàn)H,S,I各分量上下可調(diào)。調(diào)整范圍在0到1之間,即:滑動(dòng)條被拖動(dòng)時(shí),產(chǎn)生一個(gè)0到1之間的系數(shù),乘以該分量的原始值,
5、得到調(diào)整后的分量值。顯示原始圖像,和調(diào)整后的圖像。同時(shí)顯示原始的H,S,I三分量灰度圖像。</p><p><b> 2.課程設(shè)計(jì)的目的</b></p><p> 1.綜合運(yùn)用相關(guān)課程中所學(xué)到的理論知識(shí)去獨(dú)立完成設(shè)計(jì)課題。</p><p> 2.通過查閱手冊(cè)和相關(guān)文獻(xiàn)資料,培養(yǎng)獨(dú)立分析和解決問題的能力。</p><p&
6、gt; 3.進(jìn)一步熟悉Matlab運(yùn)用和圖像處理的知識(shí),加深對(duì)專業(yè)知識(shí)和理論知識(shí)學(xué)習(xí)的認(rèn)識(shí)和理解。</p><p> 4.學(xué)會(huì)撰寫課程設(shè)計(jì)的總結(jié)報(bào)告。</p><p> 5.培養(yǎng)嚴(yán)肅認(rèn)真的工作作風(fēng)和嚴(yán)謹(jǐn)?shù)目茖W(xué)態(tài)度。</p><p><b> 2.圖像處理簡(jiǎn)介</b></p><p> 數(shù)字圖像處理,通俗地講是指
7、應(yīng)用計(jì)算機(jī)以及數(shù)字設(shè)備對(duì)圖像進(jìn)行加工處理的技術(shù)。</p><p> 1.數(shù)字圖像處理發(fā)展概述</p><p> 20世紀(jì)20年代,圖像處理技術(shù)首次應(yīng)用于改善倫敦到紐約之間的海底電纜傳送圖片的質(zhì)量。</p><p> 1964年,美國(guó)噴氣推動(dòng)實(shí)驗(yàn)室用計(jì)算機(jī)成功地對(duì)4000多張?jiān)虑蛘掌M(jìn)行處理。</p><p> 70年代中期,隨著離散數(shù)
8、學(xué)理論的創(chuàng)立和完善,數(shù)字圖像處理技術(shù)得到了迅猛的發(fā)展,理論和方法不斷完善。</p><p> 90年代,隨著個(gè)人計(jì)算機(jī)進(jìn)入家庭,硬件價(jià)格不斷下降,數(shù)字世界逐漸進(jìn)入人們的生活。</p><p><b> 2.圖像處理技術(shù)</b></p><p><b> 圖像處理技術(shù)包括:</b></p><p&g
9、t; 1.圖像信息的獲取:為了在計(jì)算機(jī)上進(jìn)行圖像處理,必須把作為處理對(duì)象的模擬圖像轉(zhuǎn)換成數(shù)字圖像信息。圖像信息的獲取,一般包括圖像的攝取、轉(zhuǎn)換及數(shù)字化等幾個(gè)步驟。該部分主要由處理系統(tǒng)硬件實(shí)現(xiàn)。</p><p> 2.圖像信息的存儲(chǔ)于交換:由于數(shù)字圖像信息量大,且在處理過程中必須對(duì)數(shù)據(jù)進(jìn)行存儲(chǔ)和交換,為了解決大數(shù)據(jù)量及交換與傳輸時(shí)間的矛盾,通常除采用大容量機(jī)內(nèi)存存儲(chǔ)器進(jìn)行并行傳送,直接存儲(chǔ)訪問外,還必須采用外部
10、磁盤、光盤及磁帶存儲(chǔ)方式,從而達(dá)到提高處理的目的。該部分組要功能也由硬件完成。</p><p> 3.數(shù)字圖像處理:數(shù)字圖像處理,即把在空間上離散的,在幅度上量化分層的數(shù)字圖像,在經(jīng)過一些特定數(shù)理模式的加工處理,以達(dá)到有利于人眼視覺或某種接收系統(tǒng)所需要的圖像過程。</p><p> 4.數(shù)字圖像通訊:80年代以來,由于計(jì)算機(jī)技術(shù)和超大規(guī)模集成電路技術(shù)的巨大發(fā)展,推動(dòng)了通訊技術(shù)(包括語(yǔ)言
11、、數(shù)據(jù)、圖像)的飛速發(fā)展。因?yàn)閳D像通訊具有形象直觀、可靠、高效率等一系列優(yōu)點(diǎn),尤其是數(shù)字圖像通訊比模擬圖像通訊更具抗干擾性,便于壓縮編碼處理和易于加密,因此在圖像通訊工程中數(shù)字處理技術(shù)獲得廣泛應(yīng)用。</p><p> 5.圖像的輸出和顯示:數(shù)字圖像處理的最終目的是為了提供便于人眼或接收系統(tǒng)解釋和社別圖像,因此圖像的輸出和顯示很重要。一般圖像輸出的方式可分為硬拷貝,諸如照相、打印、掃描鼓等,還有所謂的軟拷貝,諸如
12、CRT監(jiān)視器及各種新型的平板監(jiān)視器等。</p><p><b> 3.圖像處理的內(nèi)容</b></p><p> 圖像處理的內(nèi)容包括:</p><p> 1.圖像數(shù)字化:圖像數(shù)字化即圖像采樣和量化,是指把連續(xù)的圖像信號(hào)變?yōu)殡x散的數(shù)字信號(hào),以適應(yīng)計(jì)算機(jī)的處理。</p><p> 2.圖像編碼壓縮:把數(shù)字化的圖像數(shù)據(jù)按
13、一定規(guī)則進(jìn)行排列或運(yùn)算過程,稱為圖像編碼。利用圖像本身的內(nèi)在特性,通過某種特殊的編碼方式,達(dá)到減少原圖像數(shù)據(jù)時(shí)空占用量的處理叫做圖像壓縮編碼。</p><p> 3.圖像變換:一般指利用正交變換的性質(zhì)和特點(diǎn),將圖像轉(zhuǎn)換到變換域中進(jìn)行處理,并且大部分變換都有快速算法。</p><p> 4.圖像增強(qiáng):圖像增強(qiáng)的目的是突出圖像中所感興趣的部分,如強(qiáng)化圖像的高頻分量,可使圖像中物體輪廓清晰,
14、細(xì)節(jié)明顯。</p><p> 5.圖像復(fù)原:圖像復(fù)原是盡可能恢復(fù)圖像的本來面貌,是對(duì)圖像整體而言,而且在復(fù)原處理時(shí),往往必須追求降質(zhì)原因,以便“對(duì)癥下藥”,而增強(qiáng)往往是局部。</p><p> 6.圖像分割:將圖像中包含的物體,按其灰度或幾何特性分割,并進(jìn)行處理分析,從中提取有效分量、數(shù)據(jù)等有用信息。這是進(jìn)一步進(jìn)行圖像處理如模式識(shí)別、機(jī)器視覺等技術(shù)的基礎(chǔ)。</p><
15、;p> 7.圖像分類:簡(jiǎn)單地說就是在圖像分割的基礎(chǔ)上,進(jìn)行我體的判決分類。</p><p> 8.圖像重建:它是對(duì)一些三維物體,應(yīng)用x射線、超聲波等物理方法,取得物體內(nèi)部結(jié)構(gòu)數(shù)據(jù),再將這些數(shù)據(jù)進(jìn)行運(yùn)算處理而構(gòu)成物體內(nèi)部某些部位的圖像。目前圖像重建最成功的例子是CT技術(shù)(計(jì)算機(jī)斷層掃描成像技術(shù))、彩色超聲波等。</p><p> 3.GUI及HIS模型簡(jiǎn)介</p>
16、<p><b> 1.GUI簡(jiǎn)介</b></p><p> 通常在開發(fā)一個(gè)應(yīng)用程序時(shí)都會(huì)盡量做到界面友好、直觀。最常用的方法就是使用圖形用戶界面。在Matlab中,圖形用戶界面是一個(gè)包含多種對(duì)象的圖形窗口。用戶必須對(duì)功能對(duì)象進(jìn)行界面布局和編程,從而使用戶在激活GUI的功能對(duì)象時(shí)能夠執(zhí)行相應(yīng)的行為。</p><p> Matlab為用戶開發(fā)圖形界面提供了
17、一個(gè)方便、高效的集成開發(fā)環(huán)境GUIDE(Graphic User Interface Development Environment)。GUIDE主要是一個(gè)界面設(shè)計(jì)工具集,Matlab將所有GUI的控件都集成在這個(gè)環(huán)境中并提供界面外觀、屬性和行為響應(yīng)方式的設(shè)置方法。GUIDE將用戶設(shè)計(jì)好的GUI界面保存在一個(gè)FIG文件中,同時(shí)還自動(dòng)生成一個(gè)包含GUI初始化和組件界面布局控制代碼的M文件。這個(gè)M文件為實(shí)現(xiàn)回調(diào)函數(shù)(當(dāng)用戶激活GUI某一個(gè)組
18、件時(shí)執(zhí)行的函數(shù))提供了一個(gè)參考框架,這樣既簡(jiǎn)化了GUI應(yīng)用程序的創(chuàng)建工作,用戶又可以直接使用這個(gè)框架來編寫自己的函數(shù)代碼。</p><p> 整個(gè)GUI的實(shí)現(xiàn)過程可以分為以下幾步:</p><p> 1.使用界面設(shè)計(jì)編輯器進(jìn)行GUI界面布局設(shè)計(jì);</p><p> 2.理解應(yīng)用程序M文件中所使用的編程技術(shù);</p><p> 3.編寫
19、GUI組件行為響應(yīng)控制(即回調(diào)函數(shù))代碼。</p><p><b> 2.HIS模型簡(jiǎn)介</b></p><p> 在圖像處理及顯示的過程中,為了能正確的使用顏色模型,需要建立顏色模型。顏色模型是三維顏色空間中的一個(gè)可見光集,它包含某個(gè)顏色域的所有模型。常見的顏色模型有RGB,HSV,NTSC,HIS,YCbCr等,各顏色模型之間可通過公式進(jìn)行相互轉(zhuǎn)換。</
20、p><p> HSI〔Hue-Saturation-Intensity(Lightness),HSI或HSL〕顏色模型用H、S、I三參數(shù)描述顏色特性,其中H定義顏色的波長(zhǎng),稱為色調(diào);S表示顏色的深淺程度,稱為飽和度;I表示強(qiáng)度或亮度 </p><p> 當(dāng)人觀察一個(gè)彩色物體時(shí),用色調(diào)、飽和度、亮度來描述物體的顏色。色調(diào)是描述純色的屬性(純黃色、橘黃或者紅色);飽和度給出一種純色被白光稀釋的
21、程度的度量;亮度是一個(gè)主觀的描述,實(shí)際上,它是不可以測(cè)量的,體現(xiàn)了無色的強(qiáng)度概念,并且是描述彩色感覺的關(guān)鍵參數(shù)。而強(qiáng)度(灰度)是單色圖像最有用的描述子,這個(gè)量是可以測(cè)量且很容易解釋。則將提出的這個(gè)模型稱作為HSI(色調(diào)、飽和度、強(qiáng)度)彩色模型,該模型可在彩色圖像中從攜帶的彩色信息(色調(diào)和飽和度)里消去強(qiáng)度分量的影響,使得HSI模型成為開發(fā)基于彩色描述的圖像處理方法的良好工具,而這種彩色描述對(duì)人來說是自然而直觀的。</p>
22、<p> HSI模型基于兩個(gè)重要的事實(shí):其一,I分量與圖象的彩色信息無關(guān);其二,H和S分量與人感受顏色的方式是緊密相連的。</p><p> HSI模型中的各分量可定義在如圖1(a)中所示的雙棱錐中,其中每個(gè)橫截面如圖1(b)所示。對(duì)其中的任1個(gè)色點(diǎn)P,其H的值對(duì)應(yīng)指向該點(diǎn)的矢量與R軸的夾角。這個(gè)點(diǎn)的S與指向該點(diǎn)的矢量長(zhǎng)成正比,越長(zhǎng)越飽和。</p><p><b>
23、 圖1.HIS模型</b></p><p> 圖片的RGB模型轉(zhuǎn)換成HIS模型的方法有多種,包括:幾何推導(dǎo)法,坐標(biāo)變換法,分段定義法,Bajon近似算法,標(biāo)準(zhǔn)模型法,具體轉(zhuǎn)換方法見圖2</p><p> 圖2.幾種RGB模型轉(zhuǎn)換為HIS模型方法</p><p> 本次課設(shè)采用的是方法1:幾何推導(dǎo)法,程序如下</p><p>
24、; r = im(:, :, 1);</p><p> g = im(:, :, 2);</p><p> b = im(:, :, 3);</p><p><b> %I</b></p><p> I = (r + g + b)/3;</p><p><b> %S<
25、/b></p><p> tmp1 = min(min(r, g), b);</p><p> tmp2 = r + g + b;</p><p> tmp2(tmp2 == 0) = eps;</p><p> S = 1 - 3.*tmp1./tmp2;</p><p><b> %H&l
26、t;/b></p><p> tmp1 = 0.5*((r - g) + (r - b));</p><p> tmp2 = sqrt((r - g).^2 + (r - b).*(g - b));</p><p> theta = acos(tmp1./(tmp2 + eps));</p><p> H = theta;<
27、;/p><p> H(b > g) = 2*pi - H(b > g);</p><p> H = H/(2*pi);</p><p> H(S == 0) = 0;</p><p><b> 4.GUI界面設(shè)計(jì)</b></p><p> GUI界面設(shè)計(jì)圖如下圖1所示</p
28、><p> 圖3.GUI界面設(shè)計(jì)圖</p><p> GUI界面中各元件的作用以及程序如下:</p><p> axes1:用于顯示所選擇的圖片;</p><p> axes2:用于顯示H分量灰度圖像;</p><p> axes3:用于顯示S分量灰度圖像;</p><p> axes4
29、:用于顯示I分量灰度圖像;</p><p> axes5:用于顯示調(diào)節(jié)H,S,I分量后的圖像;</p><p> pushbutton1:點(diǎn)擊該按鈕后,可以打開資源管理器,并從中選擇所要讀取處理的圖片。</p><p><b> 程序:</b></p><p><b> global H</b&g
30、t;</p><p><b> global S</b></p><p><b> global I</b></p><p> [filename ,pathname]=uigetfile({'*.jpg';'*.bmp';'*.bmp'},'&
31、#39;);</p><p> str=[pathname filename];</p><p> im=imread(str);</p><p> axes(handles.axes1);</p><p> imshow(im);</p><p> im = im2double(im);</p>
32、<p> r = im(:, :, 1);</p><p> g = im(:, :, 2);</p><p> b = im(:, :, 3);</p><p><b> %I</b></p><p> I = (r + g + b)/3;</p><p><b&g
33、t; %S</b></p><p> tmp1 = min(min(r, g), b);</p><p> tmp2 = r + g + b;</p><p> tmp2(tmp2 == 0) = eps;</p><p> S = 1 - 3.*tmp1./tmp2;</p><p><b
34、> %H</b></p><p> tmp1 = 0.5*((r - g) + (r - b));</p><p> tmp2 = sqrt((r - g).^2 + (r - b).*(g - b));</p><p> theta = acos(tmp1./(tmp2 + eps));</p><p> H =
35、 theta;</p><p> H(b > g) = 2*pi - H(b > g);</p><p> H = H/(2*pi);</p><p> H(S == 0) = 0;</p><p> axes(handles.axes5);</p><p> imshow(H,S,I)</
36、p><p> pushbutton2:點(diǎn)擊該按鈕后,將會(huì)分別在axes2,axes3,axes4上顯示原始的H,S,I三分量灰度圖像。</p><p><b> 程序:</b></p><p><b> global H</b></p><p><b> global S</b&
37、gt;</p><p><b> global I</b></p><p> axes(handles.axes2);</p><p> imshow(H);</p><p> axes(handles.axes3);</p><p> imshow(S);</p><
38、;p> axes(handles.axes4);</p><p> imshow(I);</p><p> slider1:改變圖片的H分量并將改變后的圖片顯示在axes5中。</p><p><b> 程序:</b></p><p><b> global H</b></p&
39、gt;<p><b> global S</b></p><p><b> global I</b></p><p> global sliderValue1</p><p> global sliderValue2</p><p> global sliderValue3&
40、lt;/p><p> sliderValue1=get(handles.slider1,'Value');</p><p> set(handles.edit1,'String',num2str(sliderValue1));</p><p> guidata(hObject,handles);</p><p&g
41、t; axes(handles.axes5);</p><p> imshow(H*sliderValue1,S*sliderValue2,I*sliderValue3);</p><p> slider2:改變圖片的H分量并將改變后的圖片顯示在axes5中。</p><p><b> 程序:</b></p><p&
42、gt;<b> global H</b></p><p><b> global S</b></p><p><b> global I</b></p><p> global sliderValue1</p><p> global sliderValue2<
43、/p><p> global sliderValue3</p><p> sliderValue2=get(handles.slider2,'Value');</p><p> set(handles.edit2,'String',num2str(sliderValue2));</p><p> guida
44、ta(hObject,handles);</p><p> axes(handles.axes5);</p><p> imshow(H*sliderValue1,S*sliderValue2,I*sliderValue3);</p><p> slider3:改變圖片的I分量并將改變后的圖片顯示在axes5中。</p><p><
45、;b> 程序:</b></p><p><b> global H</b></p><p><b> global S</b></p><p><b> global I</b></p><p> global sliderValue1</p&
46、gt;<p> global sliderValue2</p><p> global sliderValue3</p><p> sliderValue3=get(handles.slider3,'Value');</p><p> set(handles.edit3,'String',num2str(slid
47、erValue3));</p><p> guidata(hObject,handles);</p><p> axes(handles.axes5);</p><p> imshow(H*sliderValue1,S*sliderValue2,I*sliderValue3);</p><p><b> 6.仿真結(jié)果<
48、/b></p><p> 點(diǎn)擊pushbutton1,選擇需要處理的圖片并顯示在axes1中。</p><p><b> 圖4.選擇圖片</b></p><p> 點(diǎn)擊pushbutton2,分別在axes2,axes3,axes4中顯示原始的H,S,I三分量灰度圖像</p><p> 圖5.原始H,S,I
49、三分量灰度圖像</p><p> 分別調(diào)節(jié)H,S,I三個(gè)slider改變圖片的H,S,I三個(gè)屬性并將改變后的圖片顯示在axes5中。</p><p> 圖6.調(diào)節(jié)H,S,I三分量后的圖片</p><p><b> 6.總結(jié)</b></p><p> 經(jīng)過將近一周的設(shè)計(jì),撰寫,本次課程設(shè)計(jì)圖像HIS調(diào)整的Matla
50、b實(shí)現(xiàn)終于完成了。本次課設(shè)有個(gè)特點(diǎn)就是剛開始著手是感覺很難,都不知道從哪里下手,但到完成的時(shí)候就發(fā)現(xiàn)其實(shí)并不難,根本不復(fù)雜。這是因?yàn)楸敬握n設(shè)所涉及到的知識(shí)相Matlab的GUI界面以及所涉及到的圖像處理知識(shí)以前我都沒接觸過,但當(dāng)做完才發(fā)現(xiàn)其實(shí)這次所涉及到的知識(shí)Matlab的GUI界面以及所涉及到的圖像處理知識(shí)都知識(shí)皮毛。</p><p> 還是和以前做課設(shè)一樣,完成本次課設(shè)共經(jīng)歷了三個(gè)階段。第一階段是查閱資料。
51、拿到課設(shè)題目后,我開始上網(wǎng)在網(wǎng)上找是否有以前學(xué)長(zhǎng)做過的可以供參考下,但是沒有找到,沒有辦法,只好全靠自己獨(dú)立完成了。于是,我便去了圖書館借了關(guān)于圖像處理方面以及Matlab在圖像處理方面的書籍,在結(jié)合老師發(fā)給的PDF文檔,課件,經(jīng)過將近一天辦的閱讀,總算對(duì)GUI,HIS模型有看一定的了解,大體的設(shè)計(jì)思路也出來了。</p><p> 第二階段便正式開始做了。首先是在GUI上畫圖,由于以前學(xué)習(xí)過VB方面的知識(shí),所以
52、對(duì)于GUI的使用并沒有無從下手的感覺。重要的就是在圖片變換那一塊了,對(duì)于將RGB模型轉(zhuǎn)換成HIS模型應(yīng)該算是本次課設(shè)最棘手的一塊了。我所借的資料上關(guān)于HIS模型的知識(shí)非常少,對(duì)于RGB與HIS之間的轉(zhuǎn)換根本沒提到,更何況還要編程實(shí)現(xiàn)。于是只好通過上網(wǎng)搜索,找了很多其他的模式之間的轉(zhuǎn)換,然后再將RGB于HIS轉(zhuǎn)換的公式代入,仿真。這其中經(jīng)過了很多次的失敗,包括圖像老是顯示不出來,程序出錯(cuò)等等,最終,經(jīng)過不斷的修改,調(diào)試,終于成功的完成了仿
53、真。</p><p> 最后一階段便是撰寫課程設(shè)計(jì)報(bào)告了。經(jīng)過多次的課程設(shè)計(jì),撰寫報(bào)告已經(jīng)算是最簡(jiǎn)單的一個(gè)環(huán)節(jié)了。但要寫好,將自己這將近一個(gè)星期的經(jīng)歷全部寫進(jìn)來也不是一個(gè)小的工程量的,還是要認(rèn)真,有耐心的去完成。</p><p> 總的來說,通過獨(dú)立完成本次課程設(shè)計(jì),對(duì)我本人而言收獲頗豐學(xué)到了許多新的知識(shí)。對(duì)Matlab這個(gè)重要的軟件進(jìn)一步熟悉了,也學(xué)到了一些圖像處理方面的知識(shí),同時(shí)自
54、己的實(shí)際動(dòng)手能力也得到了提升。</p><p><b> 參考文獻(xiàn)</b></p><p> [1]《MATLAB/SIMULINK實(shí)用教程》張化光主編。人民郵電出版社,2009.3</p><p> [2]《MATLAB6.5輔助圖像處理》飛思科技產(chǎn)品研發(fā)中心編著。 電子工業(yè)出版社,2003.1</p><p>
55、; [3] 《Matlab7.x界面設(shè)計(jì)與編譯技巧》李宏顯主編。電子工業(yè)出版社,2005.3</p><p> [4]《數(shù)字圖像處理》曹茂永主編。北京大學(xué)出版社,2007.9</p><p> [5]《圖形圖像處理技術(shù)》張枝軍主編。北京大學(xué)出版社,2006.1</p><p><b> 附錄</b></p><p&g
56、t;<b> 程序清單:</b></p><p> function varargout = untitled(varargin)</p><p> % UNTITLED M-file for untitled.fig</p><p> % UNTITLED, by itself, creates a new UNTITLED
57、 or raises the existing</p><p> % singleton*.</p><p> % H = UNTITLED returns the handle to a new UNTITLED or the handle to</p><p> % the existing singleton*.</p
58、><p> % UNTITLED('CALLBACK',hObject,eventData,handles,...) calls the local</p><p> % function named CALLBACK in UNTITLED.M with the given input arguments.</p><p>
59、% UNTITLED('Property','Value',...) creates a new UNTITLED or raises the</p><p> % existing singleton*. Starting from the left, property value pairs are</p><p> %
60、 applied to the GUI before untitled_OpeningFunction gets called. An</p><p> % unrecognized property name or invalid value makes property application</p><p> % stop. All inputs are
61、 passed to untitled_OpeningFcn via varargin.</p><p> % *See GUI Options on GUIDE's Tools menu. Choose "GUI allows only one</p><p> % instance to run (singleton)".</
62、p><p> % See also: GUIDE, GUIDATA, GUIHANDLES</p><p> % Copyright 2002-2003 The MathWorks, Inc.</p><p> % Edit the above text to modify the response to help untitled</p><
63、p> % Last Modified by GUIDE v2.5 02-Sep-2012 21:18:36</p><p> % Begin initialization code - DO NOT EDIT</p><p> gui_Singleton = 1;</p><p> gui_State = struct('gui_Name
64、9;, mfilename, ...</p><p> 'gui_Singleton', gui_Singleton, ...</p><p> 'gui_OpeningFcn', @untitled_OpeningFcn, ...</p><p> 'gui_OutputFcn', @untit
65、led_OutputFcn, ...</p><p> 'gui_LayoutFcn', [] , ...</p><p> 'gui_Callback', []);</p><p> if nargin && ischar(varargin{1})</p><p> gui_St
66、ate.gui_Callback = str2func(varargin{1});</p><p><b> end</b></p><p> if nargout</p><p> [varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:});</p><p
67、><b> else</b></p><p> gui_mainfcn(gui_State, varargin{:});</p><p><b> end</b></p><p> % End initialization code - DO NOT EDIT</p><p> %
68、--- Executes just before untitled is made visible.</p><p> function untitled_OpeningFcn(hObject, eventdata, handles, varargin)</p><p> % This function has no output args, see OutputFcn.</p&
69、gt;<p> % hObject handle to figure</p><p> % eventdata reserved - to be defined in a future version of MATLAB</p><p> % handles structure with handles and user data (see GUIDATA
70、)</p><p> % varargin command line arguments to untitled (see VARARGIN)</p><p> % Choose default command line output for untitled</p><p> handles.output = hObject;</p>&l
71、t;p> % Update handles structure</p><p> guidata(hObject, handles);</p><p> % UIWAIT makes untitled wait for user response (see UIRESUME)</p><p> % uiwait(handles.figure1);<
72、;/p><p> % --- Outputs from this function are returned to the command line.</p><p> function varargout = untitled_OutputFcn(hObject, eventdata, handles) </p><p> % varargout cell a
73、rray for returning output args (see VARARGOUT);</p><p> % hObject handle to figure</p><p> % eventdata reserved - to be defined in a future version of MATLAB</p><p> % handle
74、s structure with handles and user data (see GUIDATA)</p><p> % Get default command line output from handles structure</p><p> varargout{1} = handles.output;</p><p> % --- Exec
75、utes on button press in pushbutton1.</p><p> function pushbutton1_Callback(hObject, eventdata, handles)</p><p> % hObject handle to pushbutton1 (see GCBO)</p><p> % eventdata
76、 reserved - to be defined in a future version of MATLAB</p><p> % handles structure with handles and user data (see GUIDATA)</p><p><b> global H</b></p><p><b>
77、; global S</b></p><p><b> global I</b></p><p> [filename ,pathname]=uigetfile({'*.jpg';'*.bmp';'*.bmp'},'');</p><p> st
78、r=[pathname filename];</p><p> im=imread(str);</p><p> axes(handles.axes1);</p><p> imshow(im);</p><p> im = im2double(im);</p><p> r = im(:, :, 1);&l
79、t;/p><p> g = im(:, :, 2);</p><p> b = im(:, :, 3);</p><p><b> %I</b></p><p> I = (r + g + b)/3;</p><p><b> %S</b></p><
80、;p> tmp1 = min(min(r, g), b);</p><p> tmp2 = r + g + b;</p><p> tmp2(tmp2 == 0) = eps;</p><p> S = 1 - 3.*tmp1./tmp2;</p><p><b> %H</b></p>&
81、lt;p> tmp1 = 0.5*((r - g) + (r - b));</p><p> tmp2 = sqrt((r - g).^2 + (r - b).*(g - b));</p><p> theta = acos(tmp1./(tmp2 + eps));</p><p> H = theta;</p><p> H
82、(b > g) = 2*pi - H(b > g);</p><p> H = H/(2*pi);</p><p> H(S == 0) = 0;</p><p> axes(handles.axes5);</p><p> imshow(H,S,I)</p><p> % --- Execute
83、s on button press in pushbutton2.</p><p> function pushbutton2_Callback(hObject, eventdata, handles)</p><p> % hObject handle to pushbutton2 (see GCBO)</p><p> % eventdata re
84、served - to be defined in a future version of MATLAB</p><p> % handles structure with handles and user data (see GUIDATA)</p><p><b> global H</b></p><p><b>
85、global S</b></p><p><b> global I</b></p><p> axes(handles.axes2);</p><p> imshow(H);</p><p> axes(handles.axes3);</p><p> imshow(S);
86、</p><p> axes(handles.axes4);</p><p> imshow(I);</p><p> % --- Executes on slider movement.</p><p> function slider1_Callback(hObject, eventdata, handles)</p>
87、<p> % hObject handle to slider1 (see GCBO)</p><p> % eventdata reserved - to be defined in a future version of MATLAB</p><p> % handles structure with handles and user data (se
88、e GUIDATA)</p><p><b> global H</b></p><p><b> global S</b></p><p><b> global I</b></p><p> global sliderValue1</p><p&
89、gt; global sliderValue2</p><p> global sliderValue3</p><p> sliderValue1=get(handles.slider1,'Value');</p><p> set(handles.edit1,'String',num2str(sliderValue1));
90、</p><p> guidata(hObject,handles);</p><p> axes(handles.axes5);</p><p> imshow(H*sliderValue1,S*sliderValue2,I*sliderValue3);</p><p> % Hints: get(hObject,'Valu
91、e') returns position of slider</p><p> % get(hObject,'Min') and get(hObject,'Max') to determine range of slider</p><p> % --- Executes during object creation, after
92、setting all properties.</p><p> function slider1_CreateFcn(hObject, eventdata, handles)</p><p> % hObject handle to slider1 (see GCBO)</p><p> % eventdata reserved - to be de
93、fined in a future version of MATLAB</p><p> % handles empty - handles not created until after all CreateFcns called</p><p> % Hint: slider controls usually have a light gray background, cha
94、nge</p><p> % 'usewhitebg' to 0 to use default. See ISPC and COMPUTER.</p><p> usewhitebg = 1;</p><p> if usewhitebg</p><p> set(hObject,'Backgro
95、undColor',[.9 .9 .9]);</p><p><b> else</b></p><p> set(hObject,'BackgroundColor',get(0,'defaultUicontrolBackgroundColor'));</p><p><b> end&l
96、t;/b></p><p> % --- Executes on slider movement.</p><p> function slider2_Callback(hObject, eventdata, handles)</p><p> % hObject handle to slider2 (see GCBO)</p>&l
97、t;p> % eventdata reserved - to be defined in a future version of MATLAB</p><p> % handles structure with handles and user data (see GUIDATA)</p><p><b> global H</b></p&g
98、t;<p><b> global S</b></p><p><b> global I</b></p><p> global sliderValue1</p><p> global sliderValue2</p><p> global sliderValue3&l
99、t;/p><p> sliderValue2=get(handles.slider2,'Value');</p><p> set(handles.edit2,'String',num2str(sliderValue2));</p><p> guidata(hObject,handles);</p><p>
100、; axes(handles.axes5);</p><p> imshow(H*sliderValue1,S*sliderValue2,I*sliderValue3);</p><p> % Hints: get(hObject,'Value') returns position of slider</p><p> % ge
101、t(hObject,'Min') and get(hObject,'Max') to determine range of slider</p><p> % --- Executes during object creation, after setting all properties.</p><p> function slider2_Creat
102、eFcn(hObject, eventdata, handles)</p><p> % hObject handle to slider2 (see GCBO)</p><p> % eventdata reserved - to be defined in a future version of MATLAB</p><p> % handles
103、 empty - handles not created until after all CreateFcns called</p><p> % Hint: slider controls usually have a light gray background, change</p><p> % 'usewhitebg' to 0 to use d
104、efault. See ISPC and COMPUTER.</p><p> usewhitebg = 1;</p><p> if usewhitebg</p><p> set(hObject,'BackgroundColor',[.9 .9 .9]);</p><p><b> else</b
105、></p><p> set(hObject,'BackgroundColor',get(0,'defaultUicontrolBackgroundColor'));</p><p><b> end</b></p><p> % --- Executes on slider movement.<
106、;/p><p> function slider3_Callback(hObject, eventdata, handles)</p><p> % hObject handle to slider3 (see GCBO)</p><p> % eventdata reserved - to be defined in a future version o
107、f MATLAB</p><p> % handles structure with handles and user data (see GUIDATA)</p><p><b> global H</b></p><p><b> global S</b></p><p><b
108、> global I</b></p><p> global sliderValue1</p><p> global sliderValue2</p><p> global sliderValue3</p><p> sliderValue3=get(handles.slider3,'Value'
109、;);</p><p> set(handles.edit3,'String',num2str(sliderValue3));</p><p> guidata(hObject,handles);</p><p> axes(handles.axes5);</p><p> imshow(H*sliderValue1,
110、S*sliderValue2,I*sliderValue3);</p><p> % Hints: get(hObject,'Value') returns position of slider</p><p> % get(hObject,'Min') and get(hObject,'Max') to determine
111、 range of slider</p><p> % --- Executes during object creation, after setting all properties.</p><p> function slider3_CreateFcn(hObject, eventdata, handles)</p><p> % hObject
112、 handle to slider3 (see GCBO)</p><p> % eventdata reserved - to be defined in a future version of MATLAB</p><p> % handles empty - handles not created until after all CreateFcns called<
113、/p><p> % Hint: slider controls usually have a light gray background, change</p><p> % 'usewhitebg' to 0 to use default. See ISPC and COMPUTER.</p><p> usewhitebg = 1
114、;</p><p> if usewhitebg</p><p> set(hObject,'BackgroundColor',[.9 .9 .9]);</p><p><b> else</b></p><p> set(hObject,'BackgroundColor',get
115、(0,'defaultUicontrolBackgroundColor'));</p><p><b> end</b></p><p> function edit1_Callback(hObject, eventdata, handles)</p><p> % hObject handle to edit1 (
116、see GCBO)</p><p> % eventdata reserved - to be defined in a future version of MATLAB</p><p> % handles structure with handles and user data (see GUIDATA)</p><p> sliderValue1
117、=get(handles.edit1,'String');</p><p> sliderValue1=str2num(sliderValue1);</p><p> if (isempty{sliderValue1}||sliderValue1<0||sliderValue1>1)</p><p> set(handles.sli
118、der1,'Value',0);</p><p> set(handles.edit1,'String','0');</p><p><b> else</b></p><p> set(handles.slider1,'Value',sliderValue1);</p
119、><p><b> end</b></p><p> % Hints: get(hObject,'String') returns contents of edit1 as text</p><p> % str2double(get(hObject,'String')) returns cont
120、ents of edit1 as a double</p><p> % --- Executes during object creation, after setting all properties.</p><p> function edit1_CreateFcn(hObject, eventdata, handles)</p><p> % hOb
121、ject handle to edit1 (see GCBO)</p><p> % eventdata reserved - to be defined in a future version of MATLAB</p><p> % handles empty - handles not created until after all CreateFcns calle
122、d</p><p> % Hint: edit controls usually have a white background on Windows.</p><p> % See ISPC and COMPUTER.</p><p><b> if ispc</b></p><p> set(hO
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫(kù)僅提供信息存儲(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- matlab課程設(shè)計(jì)--圖像處理
- matlab課程設(shè)計(jì)--圖像處理
- matlab課程設(shè)計(jì)圖像處理
- matlab課程設(shè)計(jì)--應(yīng)用圖像處理
- mtalab課程設(shè)計(jì) matlab圖像處理
- matlab課程設(shè)計(jì)--gui圖像處理
- matlab圖像處理課程設(shè)計(jì)報(bào)告
- 基于matlab的圖像處理的課程設(shè)計(jì)
- matlab課程設(shè)計(jì)(基于matlab的圖像處理的基本運(yùn)算)
- 基于matlab的圖像處理的課程設(shè)計(jì)
- matlab軟件課程設(shè)計(jì)-- 應(yīng)用圖像處理
- 圖像處理課程設(shè)計(jì)--基于matlab的數(shù)字圖像處理
- matlab課程設(shè)計(jì)---基于matlab圖像增強(qiáng)的比較及其理論分析
- 課程設(shè)計(jì)報(bào)告---基于matlab的圖像放縮技術(shù)
- matlab軟件課程設(shè)計(jì)---matlab實(shí)現(xiàn)dna序列的分類識(shí)別
- 數(shù)字圖像處理-課程設(shè)計(jì)報(bào)告-matlab
- matlab課程設(shè)計(jì)--matlab的繪圖
- matlab課程設(shè)計(jì)報(bào)告--信號(hào)的頻域分析及matlab實(shí)現(xiàn)
- matlab課程設(shè)計(jì)
- matlab課程設(shè)計(jì)
評(píng)論
0/150
提交評(píng)論