圖像hsi調(diào)整的matlab實(shí)現(xiàn)課程設(shè)計_第1頁
已閱讀1頁,還剩21頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、<p><b>  目錄</b></p><p>  1.課程設(shè)計的主要任務(wù)及目的1</p><p>  1.設(shè)計的主要任務(wù)1</p><p>  2.圖像處理簡介2</p><p>  1.數(shù)字圖像處理發(fā)展概述2</p><p>  2.圖像處理技術(shù)2</p>

2、<p>  3.圖像處理的內(nèi)容3</p><p>  3.GUI及HIS模型簡介4</p><p><b>  1.GUI簡介4</b></p><p>  2.HIS模型簡介4</p><p>  4.GUI界面設(shè)計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è)計的主要任務(wù)及目的</p><p><b>  1.設(shè)計的主要任務(wù)</b></p><p>  對24bits彩色圖像的顏色,使用HSI顏色模型,來對其進(jìn)處理。</p><p>  設(shè)計圖形界面(GUI)程序,使用三個滑動條實(shí)現(xiàn)H,S,I各分量上下可調(diào)。調(diào)整范圍在0到1之間,即:滑動條被拖動時,產(chǎn)生一個0到1之間的系數(shù),乘以該分量的原始值,

5、得到調(diào)整后的分量值。顯示原始圖像,和調(diào)整后的圖像。同時顯示原始的H,S,I三分量灰度圖像。</p><p><b>  2.課程設(shè)計的目的</b></p><p>  1.綜合運(yùn)用相關(guān)課程中所學(xué)到的理論知識去獨(dú)立完成設(shè)計課題。</p><p>  2.通過查閱手冊和相關(guān)文獻(xiàn)資料,培養(yǎng)獨(dú)立分析和解決問題的能力。</p><p&

6、gt;  3.進(jìn)一步熟悉Matlab運(yùn)用和圖像處理的知識,加深對專業(yè)知識和理論知識學(xué)習(xí)的認(rèn)識和理解。</p><p>  4.學(xué)會撰寫課程設(shè)計的總結(jié)報告。</p><p>  5.培養(yǎng)嚴(yán)肅認(rèn)真的工作作風(fēng)和嚴(yán)謹(jǐn)?shù)目茖W(xué)態(tài)度。</p><p><b>  2.圖像處理簡介</b></p><p>  數(shù)字圖像處理,通俗地講是指

7、應(yīng)用計算機(jī)以及數(shù)字設(shè)備對圖像進(jìn)行加工處理的技術(shù)。</p><p>  1.數(shù)字圖像處理發(fā)展概述</p><p>  20世紀(jì)20年代,圖像處理技術(shù)首次應(yīng)用于改善倫敦到紐約之間的海底電纜傳送圖片的質(zhì)量。</p><p>  1964年,美國噴氣推動實(shí)驗(yàn)室用計算機(jī)成功地對4000多張月球照片進(jìn)行處理。</p><p>  70年代中期,隨著離散數(shù)

8、學(xué)理論的創(chuàng)立和完善,數(shù)字圖像處理技術(shù)得到了迅猛的發(fā)展,理論和方法不斷完善。</p><p>  90年代,隨著個人計算機(jī)進(jìn)入家庭,硬件價格不斷下降,數(shù)字世界逐漸進(jìn)入人們的生活。</p><p><b>  2.圖像處理技術(shù)</b></p><p><b>  圖像處理技術(shù)包括:</b></p><p&g

9、t;  1.圖像信息的獲?。簽榱嗽谟嬎銠C(jī)上進(jìn)行圖像處理,必須把作為處理對象的模擬圖像轉(zhuǎn)換成數(shù)字圖像信息。圖像信息的獲取,一般包括圖像的攝取、轉(zhuǎn)換及數(shù)字化等幾個步驟。該部分主要由處理系統(tǒng)硬件實(shí)現(xiàn)。</p><p>  2.圖像信息的存儲于交換:由于數(shù)字圖像信息量大,且在處理過程中必須對數(shù)據(jù)進(jìn)行存儲和交換,為了解決大數(shù)據(jù)量及交換與傳輸時間的矛盾,通常除采用大容量機(jī)內(nèi)存存儲器進(jìn)行并行傳送,直接存儲訪問外,還必須采用外部

10、磁盤、光盤及磁帶存儲方式,從而達(dá)到提高處理的目的。該部分組要功能也由硬件完成。</p><p>  3.數(shù)字圖像處理:數(shù)字圖像處理,即把在空間上離散的,在幅度上量化分層的數(shù)字圖像,在經(jīng)過一些特定數(shù)理模式的加工處理,以達(dá)到有利于人眼視覺或某種接收系統(tǒng)所需要的圖像過程。</p><p>  4.數(shù)字圖像通訊:80年代以來,由于計算機(jī)技術(shù)和超大規(guī)模集成電路技術(shù)的巨大發(fā)展,推動了通訊技術(shù)(包括語言

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ù)的圖像信號變?yōu)殡x散的數(shù)字信號,以適應(yīng)計算機(jī)的處理。</p><p>  2.圖像編碼壓縮:把數(shù)字化的圖像數(shù)據(jù)按

13、一定規(guī)則進(jìn)行排列或運(yùn)算過程,稱為圖像編碼。利用圖像本身的內(nèi)在特性,通過某種特殊的編碼方式,達(dá)到減少原圖像數(shù)據(jù)時空占用量的處理叫做圖像壓縮編碼。</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ù)圖像的本來面貌,是對圖像整體而言,而且在復(fù)原處理時,往往必須追求降質(zhì)原因,以便“對癥下藥”,而增強(qiáng)往往是局部。</p><p>  6.圖像分割:將圖像中包含的物體,按其灰度或幾何特性分割,并進(jìn)行處理分析,從中提取有效分量、數(shù)據(jù)等有用信息。這是進(jìn)一步進(jìn)行圖像處理如模式識別、機(jī)器視覺等技術(shù)的基礎(chǔ)。</p><

15、;p>  7.圖像分類:簡單地說就是在圖像分割的基礎(chǔ)上,進(jìn)行我體的判決分類。</p><p>  8.圖像重建:它是對一些三維物體,應(yīng)用x射線、超聲波等物理方法,取得物體內(nèi)部結(jié)構(gòu)數(shù)據(jù),再將這些數(shù)據(jù)進(jìn)行運(yùn)算處理而構(gòu)成物體內(nèi)部某些部位的圖像。目前圖像重建最成功的例子是CT技術(shù)(計算機(jī)斷層掃描成像技術(shù))、彩色超聲波等。</p><p>  3.GUI及HIS模型簡介</p>

16、<p><b>  1.GUI簡介</b></p><p>  通常在開發(fā)一個應(yīng)用程序時都會盡量做到界面友好、直觀。最常用的方法就是使用圖形用戶界面。在Matlab中,圖形用戶界面是一個包含多種對象的圖形窗口。用戶必須對功能對象進(jìn)行界面布局和編程,從而使用戶在激活GUI的功能對象時能夠執(zhí)行相應(yīng)的行為。</p><p>  Matlab為用戶開發(fā)圖形界面提供了

17、一個方便、高效的集成開發(fā)環(huán)境GUIDE(Graphic User Interface Development Environment)。GUIDE主要是一個界面設(shè)計工具集,Matlab將所有GUI的控件都集成在這個環(huán)境中并提供界面外觀、屬性和行為響應(yīng)方式的設(shè)置方法。GUIDE將用戶設(shè)計好的GUI界面保存在一個FIG文件中,同時還自動生成一個包含GUI初始化和組件界面布局控制代碼的M文件。這個M文件為實(shí)現(xiàn)回調(diào)函數(shù)(當(dāng)用戶激活GUI某一個組

18、件時執(zhí)行的函數(shù))提供了一個參考框架,這樣既簡化了GUI應(yīng)用程序的創(chuàng)建工作,用戶又可以直接使用這個框架來編寫自己的函數(shù)代碼。</p><p>  整個GUI的實(shí)現(xiàn)過程可以分為以下幾步:</p><p>  1.使用界面設(shè)計編輯器進(jìn)行GUI界面布局設(shè)計;</p><p>  2.理解應(yīng)用程序M文件中所使用的編程技術(shù);</p><p>  3.編寫

19、GUI組件行為響應(yīng)控制(即回調(diào)函數(shù))代碼。</p><p><b>  2.HIS模型簡介</b></p><p>  在圖像處理及顯示的過程中,為了能正確的使用顏色模型,需要建立顏色模型。顏色模型是三維顏色空間中的一個可見光集,它包含某個顏色域的所有模型。常見的顏色模型有RGB,HSV,NTSC,HIS,YCbCr等,各顏色模型之間可通過公式進(jìn)行相互轉(zhuǎn)換。</

20、p><p>  HSI〔Hue-Saturation-Intensity(Lightness),HSI或HSL〕顏色模型用H、S、I三參數(shù)描述顏色特性,其中H定義顏色的波長,稱為色調(diào);S表示顏色的深淺程度,稱為飽和度;I表示強(qiáng)度或亮度 </p><p>  當(dāng)人觀察一個彩色物體時,用色調(diào)、飽和度、亮度來描述物體的顏色。色調(diào)是描述純色的屬性(純黃色、橘黃或者紅色);飽和度給出一種純色被白光稀釋的

21、程度的度量;亮度是一個主觀的描述,實(shí)際上,它是不可以測量的,體現(xiàn)了無色的強(qiáng)度概念,并且是描述彩色感覺的關(guān)鍵參數(shù)。而強(qiáng)度(灰度)是單色圖像最有用的描述子,這個量是可以測量且很容易解釋。則將提出的這個模型稱作為HSI(色調(diào)、飽和度、強(qiáng)度)彩色模型,該模型可在彩色圖像中從攜帶的彩色信息(色調(diào)和飽和度)里消去強(qiáng)度分量的影響,使得HSI模型成為開發(fā)基于彩色描述的圖像處理方法的良好工具,而這種彩色描述對人來說是自然而直觀的。</p>

22、<p>  HSI模型基于兩個重要的事實(shí):其一,I分量與圖象的彩色信息無關(guān);其二,H和S分量與人感受顏色的方式是緊密相連的。</p><p>  HSI模型中的各分量可定義在如圖1(a)中所示的雙棱錐中,其中每個橫截面如圖1(b)所示。對其中的任1個色點(diǎn)P,其H的值對應(yīng)指向該點(diǎn)的矢量與R軸的夾角。這個點(diǎn)的S與指向該點(diǎn)的矢量長成正比,越長越飽和。</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è)計</b></p><p>  GUI界面設(shè)計圖如下圖1所示</p

28、><p>  圖3.GUI界面設(shè)計圖</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)擊該按鈕后,將會分別在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三個slider改變圖片的H,S,I三個屬性并將改變后的圖片顯示在axes5中。</p><p>  圖6.調(diào)節(jié)H,S,I三分量后的圖片</p><p><b>  6.總結(jié)</b></p><p>  經(jīng)過將近一周的設(shè)計,撰寫,本次課程設(shè)計圖像HIS調(diào)整的Matla

50、b實(shí)現(xiàn)終于完成了。本次課設(shè)有個特點(diǎn)就是剛開始著手是感覺很難,都不知道從哪里下手,但到完成的時候就發(fā)現(xiàn)其實(shí)并不難,根本不復(fù)雜。這是因?yàn)楸敬握n設(shè)所涉及到的知識相Matlab的GUI界面以及所涉及到的圖像處理知識以前我都沒接觸過,但當(dāng)做完才發(fā)現(xiàn)其實(shí)這次所涉及到的知識Matlab的GUI界面以及所涉及到的圖像處理知識都知識皮毛。</p><p>  還是和以前做課設(shè)一樣,完成本次課設(shè)共經(jīng)歷了三個階段。第一階段是查閱資料。

51、拿到課設(shè)題目后,我開始上網(wǎng)在網(wǎng)上找是否有以前學(xué)長做過的可以供參考下,但是沒有找到,沒有辦法,只好全靠自己獨(dú)立完成了。于是,我便去了圖書館借了關(guān)于圖像處理方面以及Matlab在圖像處理方面的書籍,在結(jié)合老師發(fā)給的PDF文檔,課件,經(jīng)過將近一天辦的閱讀,總算對GUI,HIS模型有看一定的了解,大體的設(shè)計思路也出來了。</p><p>  第二階段便正式開始做了。首先是在GUI上畫圖,由于以前學(xué)習(xí)過VB方面的知識,所以

52、對于GUI的使用并沒有無從下手的感覺。重要的就是在圖片變換那一塊了,對于將RGB模型轉(zhuǎn)換成HIS模型應(yīng)該算是本次課設(shè)最棘手的一塊了。我所借的資料上關(guān)于HIS模型的知識非常少,對于RGB與HIS之間的轉(zhuǎn)換根本沒提到,更何況還要編程實(shí)現(xiàn)。于是只好通過上網(wǎng)搜索,找了很多其他的模式之間的轉(zhuǎn)換,然后再將RGB于HIS轉(zhuǎn)換的公式代入,仿真。這其中經(jīng)過了很多次的失敗,包括圖像老是顯示不出來,程序出錯等等,最終,經(jīng)過不斷的修改,調(diào)試,終于成功的完成了仿

53、真。</p><p>  最后一階段便是撰寫課程設(shè)計報告了。經(jīng)過多次的課程設(shè)計,撰寫報告已經(jīng)算是最簡單的一個環(huán)節(jié)了。但要寫好,將自己這將近一個星期的經(jīng)歷全部寫進(jìn)來也不是一個小的工程量的,還是要認(rèn)真,有耐心的去完成。</p><p>  總的來說,通過獨(dú)立完成本次課程設(shè)計,對我本人而言收獲頗豐學(xué)到了許多新的知識。對Matlab這個重要的軟件進(jìn)一步熟悉了,也學(xué)到了一些圖像處理方面的知識,同時自

54、己的實(shí)際動手能力也得到了提升。</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è)計與編譯技巧》李宏顯主編。電子工業(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等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論