第一篇:基于MATLAB數(shù)字圖像處理平臺(tái)設(shè)計(jì)
基于MATLAB 數(shù)字圖像處理平臺(tái)設(shè)計(jì)
摘要
數(shù)字圖像處理技術(shù)在各個(gè)行業(yè)得到廣泛的應(yīng)用,其交互式的圖形界面是操作者方便使用這些技術(shù)的途徑。本文主要介紹了基于MATLAB的圖形用戶界面(GUI)來設(shè)計(jì)一個(gè)簡(jiǎn)單實(shí)用的圖像處理軟件平臺(tái),其中具備圖像處理的常用功能,以滿足用戶的使用。文章詳細(xì)闡述了一下圖像處理軟件平臺(tái)的設(shè)計(jì)過程。本文的GUI設(shè)計(jì)所制作的圖像處理軟件平臺(tái)可以實(shí)現(xiàn)的功能有五個(gè)模塊:圖像變換、圖像增強(qiáng)、圖像分割、圖像變形以及其它常用處理。其中也講述了GUI的基本常用操作及文件的打開、保存及退出。文章基本介紹了以上的內(nèi)容,關(guān)于軟件還有許多未能實(shí)現(xiàn)的功能有待于日后的逐步開發(fā)和學(xué)習(xí)。關(guān)鍵詞:GUI;圖像變換;圖像增強(qiáng);圖像分割;圖像變形;圖像處理
ABSTRACT Digital image processing technology has been widely used in various industries, their interactive graphical interface is the way of the operator ease of use of these technologies.This article mainly introduced the graphical user interface(GUI)based on MATLAB to design a simple and practical platform for the image processing software, Which have commonly used image processing function, in order to meet the user's use.The article expounds the design process of the image processing software platform.This paper made the GUI design of image processing software platform can realize the function of five modules: image transformation, image enhancement, image segmentation, image distortion and other commonly used processing.The basic common operations of which also tells the story of GUI and file open, save, and exit.The content of the article introduces the above basic, about software and many fail to realize the function of the subject to the gradual development and learning in the future.Key words: GUI;Image transformation;Image enhancement;Image segmentation;Image deformation;The image processing
目錄 緒論................................................................................................................................................................1 1.1設(shè)計(jì)要求及目的....................................................................................................................................1 1.2 課題分析...............................................................................................................................................1 1.3 總體設(shè)計(jì)...............................................................................................................................................2 2 具體設(shè)計(jì).......................................................................................................................................................2 2.1 菜單設(shè)計(jì)...............................................................................................................................................2 2.2 圖像的打開、保存及退出...................................................................................................................3 2.2.1 圖像打開....................................................................................................................................3 2.2.2 圖像保存....................................................................................................................................4 2.2.3程序退出.....................................................................................................................................4 2.3 圖像變換...............................................................................................................................................4 2.3.1 傅里葉變換................................................................................................................................4 2.3.3 離散余弦變換............................................................................................................................5 2.4 圖像增強(qiáng)...............................................................................................................................................5 2.4.1 空間域增強(qiáng)................................................................................................................................5 2.4.2 頻率域增強(qiáng)................................................................................................................................6 2.5 圖像分割...............................................................................................................................................7 2.5.1 閾值分割....................................................................................................................................8 2.5.2 梯度分割....................................................................................................................................8 2.6 圖像變形...............................................................................................................................................9 2.6.1 翻轉(zhuǎn)............................................................................................................................................9 2.6.2 旋轉(zhuǎn)..........................................................................................................................................10 2.7 其它常用處理.....................................................................................................................................10 2.7.1 亮度..........................................................................................................................................10 2.7.2 對(duì)比度.......................................................................................................................................11 2.7.3 截圖...........................................................................................................................................11 2.7.4 底片效果..................................................................................................................................12 2.7.5 二值處理..................................................................................................................................12 3 結(jié)果分析.....................................................................................................................................................13 4 心得體會(huì).....................................................................................................................................................13 附錄...................................................................................................................................................................14 基于MATLAB數(shù)字圖像處理平臺(tái)設(shè)計(jì)
MATLAB是近幾年來國(guó)內(nèi)外使用最為廣泛的優(yōu)秀科技軟件之一。其語法結(jié)構(gòu)簡(jiǎn)單,具有極強(qiáng)的數(shù)值計(jì)算、數(shù)據(jù)分析、圖形繪制及圖像處理等功能。具有高質(zhì)量的圖形可視化效果和強(qiáng)大的界面設(shè)計(jì)能力。因而在數(shù)字圖像處理中有著其他語言所無法比擬的優(yōu)勢(shì)。圖形用戶界面(GUI)是提供人機(jī)交互的工具和方法。利用GUI制作圖像處理軟件能夠?qū)崿F(xiàn)圖像處理的各個(gè)內(nèi)容,主要有:圖像空間變換:鄰域和塊操作;二值圖像操作;線性濾波和濾波器設(shè)計(jì);變換域處理;圖像分析和增強(qiáng);圖像恢復(fù);圖像壓縮;形態(tài)學(xué)運(yùn)算等。緒論
1.1設(shè)計(jì)要求及目的
設(shè)計(jì)要求:以MATLAB作為工具,開發(fā)一個(gè)圖像處理軟件。主要進(jìn)行圖像處理的常用算法。由以下模塊組成:圖像變換;圖像增強(qiáng);圖像分割。按各個(gè)模塊進(jìn)行功能擴(kuò)充,也可加入其它常用的圖像處理功能。
設(shè)計(jì)目的:MATLAB 軟件為數(shù)字圖像處理提供了功能豐富的工具,應(yīng)用MATLAB友好的界面和實(shí)用高效的指令及模塊,可以使人較快地認(rèn)識(shí)、理解圖像處理的相關(guān)概念,逐步掌握?qǐng)D像處理的基本方法。此課題的設(shè)計(jì)目的是綜合運(yùn)用MATLAB工具箱實(shí)現(xiàn)圖像處理的GUI程序設(shè)計(jì),學(xué)會(huì)和掌握GUI的圖像處理平臺(tái)設(shè)計(jì)。
1.2 課題分析
此課題利用MATLAB的GUI程序設(shè)計(jì)一個(gè)簡(jiǎn)單實(shí)用的圖像處理程序。該程序具備
數(shù)字圖像處理平臺(tái)設(shè)計(jì)功能圖 像 變 換圖 像 增 強(qiáng)圖 像 分 割圖 像 變 形其它常用處理空間域增強(qiáng)頻率域增強(qiáng)閾 值分 割梯 度分 割旋 轉(zhuǎn)翻 轉(zhuǎn)傅里葉變換離散余弦變換灰度變換直方圖均衡化低通濾波器高通濾波器roberts算子canny算子sobel算子上下翻轉(zhuǎn)左右翻轉(zhuǎn)亮度對(duì)比度底截圖片效果二值圖1.1 整體功能框圖 圖像處理的常用功能,以滿足用戶的使用。程序?qū)崿F(xiàn)的圖像處理功能分為五個(gè)模塊:圖像變換、圖像增強(qiáng)、圖像分割、圖像變形以及其它常用處理。如圖1.1所示。
除以上的數(shù)字圖像處理的功能外,該程序還要實(shí)現(xiàn)圖像的讀取顯示、圖像的保存及退出等基本功能。從而實(shí)現(xiàn)完整的數(shù)字圖像平臺(tái)設(shè)計(jì),具有更好的交互性。
1.3 總體設(shè)計(jì)
軟件的總體設(shè)計(jì)界面主要分為兩個(gè)部分:顯示區(qū)域與操作區(qū)域。具體界面布局如圖1.2所示。
圖1.2 界面布局
顯示區(qū)域:定義兩個(gè)圖形區(qū)域,左面為待處理圖片來顯示載入的原圖像,右面為通過處理后的圖像。
操作區(qū)域:通過菜單欄的編輯實(shí)現(xiàn)對(duì)圖像的各種處理,分為文件和編輯兩大部分。通過文件中的打開操作顯示出處理前的圖像,在編輯中選擇某個(gè)圖像處理功能后,將在已處理圖片下就會(huì)顯示出處理后的圖片。具體設(shè)計(jì)
2.1 菜單設(shè)計(jì)
通過Menu Editor創(chuàng)建菜單欄如圖2.1所示。菜單的設(shè)計(jì)主要分為兩大部分:文件和編輯。文件包含圖像的打開、保存和退出;編輯包含圖像處理功能的五個(gè)模塊:圖像變換、圖像增強(qiáng)、圖像分割、圖像變形及其它常用處理,還有各個(gè)模塊的分支。通過此菜單來控制顯示或隱藏功能鍵。
以圖2.1的傅里葉變換為例,當(dāng)添加上某一菜單后,修改名稱為傅里葉變換,句柄為FFT,從而會(huì)在M文件中自動(dòng)生成傅里葉變換的功能函數(shù)function FFT_Callback(hObject, eventdata, handles),在此函數(shù)下編寫能夠?qū)崿F(xiàn)傅里葉變換的程序便能實(shí)現(xiàn)對(duì)圖像的傅里葉 變換。
圖2.1 菜單欄
2.2 圖像的打開、保存及退出
2.2.1 圖像打開
圖像的打開主要是通過以下程序來實(shí)現(xiàn)的:
“[filename,pathname]=uigetfile({'*.jpg';'*.bmp';'*.tif';'*.*'},'載入圖像');” 選擇相應(yīng)路徑打開圖像;
“file=[pathname,filename];x=imread(file);”讀取選中的圖像; “imshow(x);”在顯示區(qū)域上顯示圖像。
具體操作如圖2.2所示,選擇“文件”菜單中的“打開”后,出現(xiàn)“載入圖像”,選中想要處圖2.2 圖像的打開
理的圖片后點(diǎn)擊“打開”,即可在顯示區(qū)域中顯示出處理前的圖片。
2.2.2 圖像保存
圖像的保存主要是通過以下程序來實(shí)現(xiàn)的:
“[sfilename,sfilepath]=uiputfile({'*.jpg';'*.bmp';'*.tif';'*.*'},'保存圖像文件','untitled.jpg');” 選擇圖像文件保存的路徑與格式;
“sfilefullname=[sfilepath ,sfilename];imwrite(handles.img,sfilefullname);”實(shí)現(xiàn)對(duì)圖像的保存。
具體操作如圖2.3所示,選擇“文件”菜單中的“保存”后,出現(xiàn)“保存圖像文件”,修改文件名后點(diǎn)擊“保存”,即可將處理后的圖像保存到keshe的文件夾下。
圖2.3 圖像的保存
2.2.3程序退出
程序的退出是通過“clc;”,“close all;”,“close(gcf);”,“clear;”這些指令來清除指令窗,窗口,內(nèi)存變量及函數(shù)。
具體操為選擇“文件”菜單中的“退出”后,便關(guān)閉了執(zhí)行界面的窗口并清除了指令窗的所有指令。
2.3 圖像變換
2.3.1 傅里葉變換
傅里葉變換(FFT)實(shí)際上是將信號(hào)f(t)與一組不同頻率的復(fù)正弦作內(nèi)積,這一組復(fù)正弦是變換的基向量,傅里葉系數(shù)或傅里葉變換是f(t)在這一組基向量上的投影。在圖像處理技術(shù)的發(fā)展過程中,F(xiàn)FT起著十分重要的作用。它是線性系統(tǒng)分析的一個(gè)有力工具,它能夠定量地分析諸如數(shù)字圖像之類的數(shù)字化系統(tǒng)。FFT主要分為連續(xù)傅里葉變換和離散傅里葉變換,在數(shù)字圖像處理中經(jīng)常用到的是二維離散傅里葉變換。
程序中主要是通過二維離散傅里葉變換函數(shù)fft2(),變換后四個(gè)角部分對(duì)應(yīng)于低頻成分,中央部分對(duì)應(yīng)于高頻成分。若想使低頻成分出現(xiàn)在中央位置,則通過函數(shù)fftshift()將圖像頻譜中心從矩陣的原點(diǎn)移到矩陣中心。從而實(shí)現(xiàn)圖像的二維傅里葉變換。具體程序見 附錄。原圖像及傅里葉變換后的圖像如圖2.4所示。
圖2.4 傅里葉變換
2.3.3 離散余弦變換
離散余弦變換(DFT)在圖像處理中占有重要的位置,它實(shí)際上是傅里葉變換的實(shí)數(shù)部分,但是它比傅里葉變換有更強(qiáng)的信息集中能力。對(duì)于大多數(shù)自然圖像,DCT能將大多數(shù)的信息放到較少的系數(shù)上去,因此就更能提高編碼的效率。
程序中主要是通過灰度變換函數(shù)rgb2gray()及二維離散余弦變換函數(shù)dct2()來實(shí)現(xiàn)對(duì)圖像的二維離散余弦變換,具體程序見附錄。其變換后的圖像低頻能量都集中在左上角區(qū)域,而向著右下角方向,頻率越來越高。原圖像及離散余弦變換后的圖像如圖2.5所示。
圖2.5 離散余弦變換
2.4 圖像增強(qiáng)
圖像增強(qiáng)是圖像處理中的一類基本技術(shù),其主要的目的改善圖像的視覺效果,提高圖像的清晰度。圖像增強(qiáng)能夠擴(kuò)展對(duì)比度,增強(qiáng)圖像中對(duì)象的邊緣,消除或抑制噪聲或保留圖像中感興趣的某些特性而抑制另一些特性等。圖像增強(qiáng)方法按其處理所進(jìn)行的空間不同,可分為空間域法和頻率域法。2.4.1 空間域增強(qiáng)
空間域法是在空間域內(nèi)直接對(duì)像素灰度值進(jìn)行運(yùn)算處理,常用的空間域法有圖像的直接灰度變換和直方圖均衡化,下面分別介紹兩種空域上的圖像增強(qiáng)方法。(1)灰度變換
通過灰度變換可使圖像動(dòng)態(tài)范圍加大,圖像對(duì)比度擴(kuò)展,圖像清晰,特征明顯,大大改善人眼的視覺效果。
程序中主要通過灰度處理函數(shù)rgb2gray()對(duì)圖像進(jìn)行灰度變換,將彩色圖像轉(zhuǎn)換成灰度圖像。原圖像及灰度圖像如圖2.6所示。
圖2.6 灰度變換
(2)直方圖均衡化
直方圖均衡化是對(duì)原始圖像中的像素灰度作某種映射變換,使變換后的圖像灰度的概率密度是均勻分布的,即變換后圖像是一幅灰度級(jí)均勻分布圖像,這意味著圖像灰度的動(dòng)態(tài)范圍得到了增加,從而可提高圖像的對(duì)比度。
程序中主要通過灰度處理函數(shù)rgb2gray()先對(duì)圖像進(jìn)行灰度變換,然后通過直方圖均衡化處理函數(shù)histeq()對(duì)灰度圖像進(jìn)行直方圖均衡化處理。原圖像及直方圖均衡化后的圖像如圖2.7所示。
圖2.7 直方圖均衡化
2.4.2 頻率域增強(qiáng)
頻率域法就是在圖像的某種變換域內(nèi),對(duì)圖像的變換值進(jìn)行運(yùn)算,然后通過逆變換獲得圖像增強(qiáng)效果。這是一種間接處理方法,一般采用二維數(shù)字濾波方法來進(jìn)行頻率域的圖像增強(qiáng)。(1)低通濾波
圖像的邊緣以及噪聲干擾在圖像的頻域上對(duì)應(yīng)于圖像傅里葉變換中的高頻部分,而圖像的背景區(qū)則對(duì)應(yīng)于低頻部分,因此可以用頻域低通濾波法去除圖像的高頻成分,以去掉噪聲,使圖像平滑。
程序中采用二階巴特沃斯低通濾波器,先用函數(shù)fft2()對(duì)圖像進(jìn)行二維離散傅里葉變換,然后通過低通濾波器進(jìn)行濾波后,再對(duì)濾波后的圖像數(shù)據(jù)通過ifft2()進(jìn)行傅里葉反變換,從而得到低通濾波后的圖像。如圖2.8所示。
圖2.8 低通濾波器
(2)高通濾波
圖像中的邊緣或線條與圖像頻譜中的高頻分量相對(duì)應(yīng),因此采用高通濾波器讓高頻分量順利通過,可以使圖像的邊緣或線條變得更清楚,可實(shí)現(xiàn)圖像的銳化。
程序中采用二階巴特沃斯高通濾波器,與低通濾波過程相同,先進(jìn)行傅里葉變換,然后通過高通濾波器,再進(jìn)行傅里葉反變換,從而得到高通濾波后的圖像,具體程序見附錄。原圖像及濾波后的圖像如圖2.9所示。
圖2.9 高通濾波器
2.5 圖像分割
圖像分割是一種重要的圖像分析技術(shù)。為了識(shí)別和分析圖像中的目標(biāo),需要將它們從圖像中分離提取出來,在此基礎(chǔ)上才有可能進(jìn)一步對(duì)目標(biāo)進(jìn)行測(cè)量和對(duì)圖像進(jìn)行利用。圖像分割就是指把圖像分成各具特性的區(qū)域并提取出感興趣目標(biāo)的技術(shù)和過程。2.5.1 閾值分割
灰度閾值法是把圖像的灰度分成不同的等級(jí),然后用設(shè)置灰度閾值的方法確定有意義的區(qū)域或欲分割物的邊界,該方法中最簡(jiǎn)單的就是二值化的閾值分割。
程序中先通過函數(shù)graythresh()即用Otsu方法計(jì)算出全局圖像閾值,再通過函數(shù)im2bw(,)基于一定閾值將圖像轉(zhuǎn)換成二值圖像。原圖像及閾值分割后的圖像如圖2.10所示。
圖2.10 閾值分割
2.5.2 梯度分割
梯度分割即對(duì)圖像進(jìn)行邊緣檢測(cè),圖像邊緣對(duì)圖像識(shí)別和計(jì)算機(jī)分析十分有用。邊緣能勾劃出目標(biāo)物體,使觀察者一目了然。邊緣蘊(yùn)含了豐富的內(nèi)在信息,是圖像識(shí)別中抽取圖像特征的重要屬性。
(1)Roberts算子
程序中先通過函數(shù)rgb2gray()對(duì)圖像進(jìn)行灰度變換,再通過函數(shù)edge(,'roberts')即用Roberts算子識(shí)別灰度圖像的輪廓,從而實(shí)現(xiàn)對(duì)圖像的邊緣檢測(cè)。如圖2.11所示。
圖2.11 Roberts算子
(2)Canny算子
程序中先通過函數(shù)rgb2gray()對(duì)圖像進(jìn)行灰度變換,再通過函數(shù)edge(,'canny')即用Canny算子識(shí)別灰度圖像的輪廓,如圖2.12所示。(3)Sobel算子
程序中先通過函數(shù)rgb2gray()進(jìn)行灰度變換,再通過函數(shù)edge(,'sobel')即用Sobel算 子識(shí)別灰度圖像的輪廓,從而實(shí)現(xiàn)對(duì)圖像的邊緣檢測(cè)。如圖2.13所示。
圖2.12 Canny算子
圖2.13 Sobel算子
2.6 圖像變形
2.6.1 翻轉(zhuǎn)
上下翻轉(zhuǎn):程序中通過函數(shù)flipud()對(duì)圖像數(shù)據(jù)矩陣進(jìn)行上下翻轉(zhuǎn),由于彩色圖像不能直接進(jìn)行矩陣翻轉(zhuǎn),因此需要先將彩色圖像通過灰度變換處理后再進(jìn)行翻轉(zhuǎn),原圖及翻轉(zhuǎn)后的圖像如圖2.14所示。
圖2.14 上下翻轉(zhuǎn) 左右翻轉(zhuǎn):與上下翻轉(zhuǎn)相同,先將圖像進(jìn)行灰度變換后,通過函數(shù)fliplr()將圖像數(shù)據(jù)矩陣進(jìn)行左右翻轉(zhuǎn),原圖及翻轉(zhuǎn)后的圖像如圖2.15所示。
圖2.15 左右翻轉(zhuǎn)
2.6.2 旋轉(zhuǎn)
打開圖片后,選擇“編輯”菜單“圖像變形”中的“旋轉(zhuǎn)”后,執(zhí)行界面會(huì)出現(xiàn)調(diào)整角度的輸入對(duì)話框,在對(duì)話框中輸入任意角度,則原圖像將會(huì)旋轉(zhuǎn)任意角度,輸入正數(shù)逆時(shí)針旋
。轉(zhuǎn),輸入負(fù)數(shù)順時(shí)針旋轉(zhuǎn)。以90為例,在對(duì)話框中輸入90,則圖像逆時(shí)針旋轉(zhuǎn)90,如圖2.16所示。
在程序中由prompt={'調(diào)整角度'};來顯示輸入對(duì)話框,函數(shù)inputdlg()創(chuàng)建對(duì)話框和輸入框,輸入角度后通過函數(shù)imrotate()進(jìn)行相應(yīng)的旋轉(zhuǎn)。
圖2.16 圖像旋轉(zhuǎn)
2.7 其它常用處理
2.7.1 亮度
當(dāng)在“編輯”菜單中選擇“亮度”后,會(huì)出現(xiàn)調(diào)整倍數(shù)的輸入對(duì)話框,默認(rèn)值為1,在對(duì)話框中輸入數(shù)值后圖像便會(huì)相應(yīng)變換亮度。輸入數(shù)值小于1時(shí),圖像變亮,輸入數(shù)值大于1時(shí),圖像變暗。程序中通過函數(shù)imadjust()來實(shí)現(xiàn),即將原圖像的亮度值以輸入數(shù)值描述的曲線關(guān)系映射到新的數(shù)值中,從而實(shí)現(xiàn)亮度的變化。以輸入值0.5為例,變換后的圖像如圖2.17所示。
圖2.17 亮度調(diào)整
2.7.2 對(duì)比度
對(duì)比度增強(qiáng):選擇菜單中“對(duì)比度增強(qiáng)”后,彈出輸入?yún)?shù)的對(duì)話框,以輸入?yún)?shù)2為例,對(duì)比度增強(qiáng)后的圖像如圖2.18所示。程序中通過乘法函數(shù)immultiply()將原圖像數(shù)據(jù)與輸入數(shù)值相乘,從而增強(qiáng)圖像的對(duì)比度。
圖2.18 對(duì)比度增強(qiáng)
對(duì)比度減弱:選擇菜單中“對(duì)比度減弱”后,彈出輸入?yún)?shù)的對(duì)話框,同樣以輸入?yún)?shù)2為例,對(duì)比度減弱后的圖像如圖2.19所示。程序中通過除法函數(shù)imdivide()將原圖像數(shù)據(jù)與輸入數(shù)值相除,從而減弱圖像的對(duì)比度。
圖2.19 對(duì)比度減弱
2.7.3 截圖 當(dāng)選擇完菜單中的“截圖”后,鼠標(biāo)箭頭會(huì)變成一個(gè)十字,能夠選擇想要截取的圖像部分,選中后就會(huì)直接顯示出截取后的圖像,如圖2.20所示。程序中通過函數(shù)imcrop()來實(shí)
圖2.20 截圖
現(xiàn)的,即返回圖像的一個(gè)裁剪區(qū)域,允許用戶以交互方式使用鼠標(biāo)選定要剪切的區(qū)域。2.7.4 底片效果
程序中通過函數(shù)imcomplement()對(duì)圖像數(shù)據(jù)矩陣進(jìn)行取反運(yùn)算,即可實(shí)現(xiàn)底片效果,原圖像及底片效果的圖像如圖2.21所示。
圖2.21 底片效果
2.7.5 二值處理
二值化即將彩色圖像轉(zhuǎn)換成只有0和1兩個(gè)數(shù)值的圖像,程序中通過二值轉(zhuǎn)換函數(shù)im2bw()將彩色圖像轉(zhuǎn)換為二值圖像。原圖像及轉(zhuǎn)換后的二值圖像如圖2.22所示。
圖2.22 二值處理 3 結(jié)果分析
經(jīng)過我們小組的不斷調(diào)試,軟件已經(jīng)得到了完善,達(dá)到了課設(shè)的基本要求,基于MATLAB數(shù)字圖像處理平臺(tái)設(shè)計(jì)能實(shí)現(xiàn)的全部功能如下:(1)設(shè)計(jì)圖形用戶界面,實(shí)現(xiàn)了圖像的打開、保存及退出
(2)實(shí)現(xiàn)了對(duì)圖像的傅里葉變換及離散余弦變換,其中離散余弦變換只能對(duì)灰度圖像處理。(3)實(shí)現(xiàn)了圖像空間域增強(qiáng)包括灰度變換和直方圖均衡化,還有圖像頻率域增強(qiáng)包括低通濾波器和高通濾波器。其中直方圖均衡化,低通濾波和高通濾波均只支持對(duì)灰度圖像處理。
(4)實(shí)現(xiàn)了圖像分割:閾值分割和梯度分割,梯度分割有Roberts算子、Canny算子、Sobel算子。其中梯度分割需要對(duì)圖像先進(jìn)行灰度變換。(5)實(shí)現(xiàn)了圖像的翻轉(zhuǎn)和旋轉(zhuǎn)。圖像的翻轉(zhuǎn)只支持灰度圖像。
(6)實(shí)現(xiàn)了圖像的亮度,對(duì)比度的調(diào)整,能夠?qū)D像截圖、做出底片效果及二值化處理。
實(shí)驗(yàn)程序雖然基本實(shí)現(xiàn)了以上這些功能,但遺憾的是有些功能只支持對(duì)灰度的圖像處理,還不能直接對(duì)彩色圖像進(jìn)行處理。心得體會(huì)
通過兩周的MATLAB課程設(shè)計(jì)實(shí)踐,使我對(duì)MATLAB的使用有了進(jìn)一步的了解和熟悉。還記得當(dāng)初我們小組抽到這個(gè)題目的時(shí)候,每個(gè)人看到這個(gè)題目都無所適從。雖然曾經(jīng)學(xué)過關(guān)于數(shù)字圖像處理的課程,但對(duì)于MATLAB的數(shù)字圖像處理的實(shí)際運(yùn)用并不是很熟悉,特別是對(duì)此次GUI設(shè)計(jì)更是沒有絲毫接觸過的。
雖然對(duì)課題感到很懵懂,但在指導(dǎo)老師的提示與指導(dǎo)后,我們開始找到了解決問題的路徑。我們到圖書館借了幾本相關(guān)的書,又從網(wǎng)上收集了大量的資料,為這次課設(shè)做了較為充分的準(zhǔn)備,在參考了相關(guān)材料及程序后,我對(duì)自己要做的課設(shè)內(nèi)容有了進(jìn)一步的了解,并對(duì)MATLAB的使用有了更深的體會(huì)。
當(dāng)然,在課設(shè)的進(jìn)行過程中,我們還是遇到了不少問題。例如,起初由于我對(duì)句柄使用以及一些函數(shù)使用的不恰當(dāng),使得在對(duì)圖像文件的保存上就遇到了問題,不過在我們小組的討論研究下輕松的就解決了。隨著課設(shè)的進(jìn)行,對(duì)matlab的的熟悉度逐步加深。在基本功能已經(jīng)完成的基礎(chǔ)上,我們開始進(jìn)行一些擴(kuò)張功能的嘗試,比如圖像的旋轉(zhuǎn)、翻轉(zhuǎn),圖像亮度、對(duì)比度的調(diào)整,截圖等功能,也實(shí)現(xiàn)了較為理想的結(jié)果。
雖然這課題最終的功能還不是很完善,但是我還是較為滿意的。本次的課程設(shè)計(jì),不但鞭策著我去鞏固MATLAB的理論知識(shí),還提高了我對(duì)MATLAB的實(shí)際操作運(yùn)用,使得理論與實(shí)踐相結(jié)合,為進(jìn)一步學(xué)MATLAB打下了堅(jiān)實(shí)的基礎(chǔ)。附錄
function varargout = keshe(varargin)gui_Singleton = 1;gui_State = struct('gui_Name',mfilename,...'gui_Singleton', gui_Singleton,...'gui_OpeningFcn', @keshe_OpeningFcn,...'gui_OutputFcn', @keshe_OutputFcn,...'gui_LayoutFcn', [] ,...'gui_Callback',[]);if nargin && ischar(varargin{1})
gui_State.gui_Callback = str2func(varargin{1});end if nargout
[varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:});else
gui_mainfcn(gui_State, varargin{:});end %----------function keshe_OpeningFcn(hObject, eventdata, handles, varargin)handles.output = hObject;guidata(hObject, handles);%--------function varargout = keshe_OutputFcn(hObject, eventdata, handles)varargout{1} = handles.output;%--------function open_Callback(hObject, eventdata, handles)% hObject
handle to open(see GCBO)% eventdata reservedto be defined in a future version of MATLAB % handles
structure with handles and user data(see GUIDATA)[sfilename ,sfilepath]=uiputfile({'*.jpg';'*.bmp';'*.tif';'*.*'},'保存圖像文件','untitled.jpg');
%返回要保存的圖像文件
if ~isequal([sfilename,sfilepath],[0,0])
%如果不是取消保存
sfilefullname=[sfilepath ,sfilename];
%將文件名和目錄名組合成一個(gè)完整的路徑
imwrite(handles.img,sfilefullname);
%保存圖像
else
msgbox('取消保存?','保存圖像文件');%彈出一個(gè)名為保存圖像文件的對(duì)話框,內(nèi)
容為“取消保存?”
end %--------function exit_Callback(hObject, eventdata, handles)% hObject
handle to exit(see GCBO)% eventdata reservedto be defined in a future version of MATLAB % handles
structure with handles and user data(see GUIDATA)axes(handles.axes2);i1=handles.img;
%獲取圖像
i2=im2double(i1);
%圖像矩陣轉(zhuǎn)換成雙精度浮點(diǎn)類型 f1=fft2(i2);
%對(duì)圖像進(jìn)行二維離散傅里葉變換
fc1=fftshift(f1);
%將變換后的圖象頻譜中心從矩陣的原點(diǎn)移到矩陣的中心 i=log(1+abs(fc1));
%對(duì)變換后的圖像矩陣數(shù)據(jù)求絕對(duì)值后取自然對(duì)數(shù) imshow(i);
xlabel('傅里葉變換圖像');handles.img=i;guidata(hObject,handles);
%把handles句柄更新
%--------function DCT_Callback(hObject, eventdata, handles)% hObject
handle to DCT(see GCBO)% eventdata reservedto be defined in a future version of MATLAB % handles
structure with handles and user data(see GUIDATA)global T
%定義全局變量
axes(handles.axes2);
%定義圖形區(qū)域axes2 T=getimage;
%從坐標(biāo)軸獲取圖像數(shù)據(jù)
x=rgb2gray(handles.img);%利用 rgb2gray函數(shù)對(duì)源圖像進(jìn)行灰度處理
imshow(x);
%顯示圖像
xlabel('灰度圖像');
% x軸名為“灰度圖像” handles.img=x;
%把圖像發(fā)給handles.img guidata(hObject,handles);
%把handles句柄更新
%--------function zhifangtu_Callback(hObject, eventdata, handles)% hObject
handle to zhifangtu(see GCBO)% eventdata reservedto be defined in a future version of MATLAB % handles
structure with handles and user data(see GUIDATA)axes(handles.axes2);y1=handles.img;
%獲取圖像 x=rgb2gray(handles.img);
%灰度變換
f=double(x);
%數(shù)據(jù)類型轉(zhuǎn)換為雙精度數(shù)值 g=fft2(f);
%二維離散傅里葉變換
g=fftshift(g);
%將變換后的圖象頻譜中心從矩陣的原點(diǎn)移到矩陣的中心 [M,N]=size(g);
%返回矩陣g的大小,即M為行數(shù),N為列數(shù) nn=2;
%二階巴特沃斯低通濾波器 d0=50;
%截止頻率50Hz m=fix(M/2);n=fix(N/2);
%取矩陣g的行數(shù)和列數(shù)一半的整數(shù) for i=1:M
for j=1:N
% 循環(huán)
d=sqrt((i-m)^2+(j-n)^2);
h=1/(1+0.414*(d/d0)^(2*nn));
%計(jì)算低通濾波器傳遞函數(shù)
result(i,j)=h*g(i,j);
%結(jié)果返回到result
end end result=ifftshift(result);
%將圖象頻譜中心從矩陣的中心移到矩陣的原點(diǎn) y2=ifft2(result);
%二維離散傅里葉反變換
y3=uint8(real(y2));
%把矩陣y2實(shí)部轉(zhuǎn)換成8位無符號(hào)數(shù)據(jù) imshow(y3);
%顯示低通濾波后的圖像 xlabel('低通濾波圖像');handles.img=y3;guidata(hObject,handles);
%把handles句柄更新
%--------function high_Callback(hObject, eventdata, handles)% hObject
handle to high(see GCBO)% eventdata reservedto be defined in a future version of MATLAB % handles
structure with handles and user data(see GUIDATA)axes(handles.axes2);T=getimage;
%從坐標(biāo)軸獲取圖像數(shù)據(jù)
level=graythresh(T);
%用Otsu方法計(jì)算全局圖像閾值
BW=im2bw(T,level);
%基于一定閾值把圖像轉(zhuǎn)換為二值圖像 imshow(BW);
%顯示閾值分割后的圖像 xlabel('閾值分割圖像');handles.img=BW;guidata(hObject,handles);
%把handles句柄更新
%--------function tidu_Callback(hObject, eventdata, handles)function kongyu_Callback(hObject, eventdata, handles)function pinyu_Callback(hObject, eventdata, handles)function bianxing_Callback(hObject, eventdata, handles)function qita_Callback(hObject, eventdata, handles)function duibidu_Callback(hObject, eventdata, handles)%--------function roberts_Callback(hObject, eventdata, handles)% hObject
handle to roberts(see GCBO)% eventdata reservedto be defined in a future version of MATLAB % handles
structure with handles and user data(see GUIDATA)axes(handles.axes2);T=getimage;
%從坐標(biāo)軸獲取圖像數(shù)據(jù) C1=rgb2gray(T);
%灰度變換
C2=edge(C1,'canny');
%用canny算子識(shí)別灰度圖像的輪廓 imshow(C2);xlabel('Canny算子圖像');handles.img=C2;guidata(hObject,handles);
%把handles句柄更新
%--------function sobel_Callback(hObject, eventdata, handles)% hObject
handle to sobel(see GCBO)% eventdata reservedto be defined in a future version of MATLAB % handles
structure with handles and user data(see GUIDATA)axes(handles.axes2);T=getimage;
%從坐標(biāo)軸獲取圖像數(shù)據(jù)
prompt={'調(diào)整角度'};
%用于顯示可提示用戶進(jìn)行輸入角度的對(duì)話框 defans={'0'};
%對(duì)話框內(nèi)顯示默認(rèn)數(shù)值為0 p=inputdlg(prompt,'input',1,defans);
%創(chuàng)建并打開標(biāo)題為input的輸入對(duì)話框,包含
“調(diào)整角度”,輸入框?yàn)?行,對(duì)話框中默認(rèn)顯示數(shù)值為0 p1=str2num(p{1});
%將字符串轉(zhuǎn)換為數(shù)值
f=imrotate(handles.img,p1,'bilinear','crop');%將圖像handles.img饒圖像的中心點(diǎn)旋轉(zhuǎn)p1
度,p1為正數(shù)逆時(shí)針旋轉(zhuǎn),為負(fù)數(shù)順時(shí)針旋轉(zhuǎn),bilinear為使用雙線性插值法,crop為旋19
轉(zhuǎn)后輸出圖像尺寸與原圖像尺寸一樣
imshow(f);
%顯示旋轉(zhuǎn)后圖像 xlabel('旋轉(zhuǎn)后的圖像');handles.img=f;guidata(hObject,handles);
%把handles句柄更新
%--------function shangxia_Callback(hObject, eventdata, handles)% hObject
handle to shangxia(see GCBO)% eventdata reservedto be defined in a future version of MATLAB % handles
structure with handles and user data(see GUIDATA)
axes(handles.axes2);
T= getimage;
%從坐標(biāo)軸獲取圖像數(shù)據(jù)
f=fliplr(handles.img);
%將圖像矩陣左右翻轉(zhuǎn)
imshow(f);
%顯示翻轉(zhuǎn)后的圖像
xlabel('左右翻轉(zhuǎn)后的圖像');
handles.img=f;
guidata(hObject,handles);
%把handles句柄更新
%--------function liangdu_Callback(hObject, eventdata, handles)% hObject
handle to liangdu(see GCBO)% eventdata reservedto be defined in a future version of MATLAB % handles
structure with handles and user data(see GUIDATA)axes(handles.axes2);T=getimage;
%從坐標(biāo)軸獲取圖像數(shù)據(jù)
prompt={'輸入?yún)?shù)'};
%用于顯示可提示用戶進(jìn)行輸入?yún)?shù)的對(duì)話框
defans={'1'};
%對(duì)話框內(nèi)顯示默認(rèn)數(shù)值為1 p=inputdlg(prompt,'input',1,defans);%創(chuàng)建并打開標(biāo)題為input的輸入對(duì)話框,包含“輸入
參數(shù)”,輸入框?yàn)?行,對(duì)話框中默認(rèn)顯示數(shù)值為1 p1=str2num(p{1});
%將字符串轉(zhuǎn)換為數(shù)值
f=immultiply(handles.img,p1);
%將原圖像數(shù)據(jù)與輸入數(shù)值相乘,從而增強(qiáng)對(duì)比度
imshow(f);
%顯示對(duì)比度增強(qiáng)后的圖像 xlabel('對(duì)比度增強(qiáng)的圖像');handles.img=f;guidata(hObject,handles);
%把handles句柄更新
%--------function jianruo_Callback(hObject, eventdata, handles)% hObject
handle to jianruo(see GCBO)% eventdata reservedto be defined in a future version of MATLAB % handles
structure with handles and user data(see GUIDATA)axes(handles.axes2);T=getimage;
%從坐標(biāo)軸獲取圖像數(shù)據(jù) x=imcrop(handles.img);
% 返回圖像的一個(gè)裁剪區(qū)域,允許用戶以交互方式使用
鼠標(biāo)選定要剪切的區(qū)域
imshow(x);
%顯示裁剪后的圖像 xlabel('裁剪后的圖像');handles.img=x;guidata(hObject,handles);
%把handles句柄更新
%--------function dipian_Callback(hObject, eventdata, handles)% hObject
handle to dipian(see GCBO)% eventdata reservedto be defined in a future version of MATLAB % handles
structure with handles and user data(see GUIDATA)axes(handles.axes2);T=getimage;
%從坐標(biāo)軸獲取圖像數(shù)據(jù) BW=im2bw(handles.img);
%將圖像轉(zhuǎn)換為二值圖像 imshow(BW);
%顯示二值圖像 xlabel('二值圖像');handles.img=BW;guidata(hObject,handles);
%把handles句柄更新
第二篇:基于MATLAB的數(shù)字圖像處理
目 錄 引言.................................................................................................................1 2 設(shè)計(jì)使用軟件....................................................................................................2 2.1MATLAB簡(jiǎn)介.........................................................................................2 2.2matlab基本操作.......................................................................................2 3 圖像幾何變換設(shè)計(jì)原理....................................................................................4 3.1圖像幾何變換設(shè)計(jì)說明..........................................................................4 3.2 圖像平移理論基礎(chǔ).................................................................................4 3.3圖像縮放的理論基礎(chǔ)..............................................................................5 3.4雙線性插值法..........................................................................................5 3.5最鄰近差值法..........................................................................................6 4圖像變換總體設(shè)計(jì).............................................................................................7 4.1基于MATLAB的GUI設(shè)計(jì)..................................................................7 4.2插入圖像..................................................................................................8 4.3圖像的平移變換......................................................................................9 4.3.1圖像右下方平移...........................................................................9 4.3.3圖像左上方平移.........................................................................10 4.4圖像的縮放變換....................................................................................12 4.4.1基于雙線性插值法的圖像縮放.................................................12 4.4.2鄰近插值法的圖像縮放.............................................................13 5心得體會(huì)...........................................................................................................14 參考文獻(xiàn)..............................................................................................................15 附錄一..................................................................................................................16
課程設(shè)計(jì)說明書 引言
數(shù)字圖像處理技術(shù)是20世界60年代發(fā)展起來的一門新興學(xué)科,隨著圖像處理理論和方法的進(jìn)一步完善,使得數(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í)圖形工具。根據(jù)它提供的500多個(gè)數(shù)學(xué)和工程函數(shù),工程技術(shù)人員和科學(xué)工作者可以在它的集成環(huán)境中交互或變成以完成各自的計(jì)算。MATLAB中集成了功能強(qiáng)大的圖像處理工具箱。由于MATLAB語言的語法特征與C語言極為相似,而且更加簡(jiǎn)單,更加符合科技人員對(duì)數(shù)學(xué)表達(dá)式的書寫格式,而且這種語言可移植性好、可擴(kuò)展性強(qiáng),再加上其中有豐富的圖像處理函數(shù),所以MATLAB在圖像處理的應(yīng)用中具有很大的優(yōu)勢(shì)。
MATLAB是一種以矩陣運(yùn)算為基礎(chǔ)的交互式程序語言,能夠滿足科學(xué)、工程計(jì)算和繪圖的要求,與其它計(jì)算機(jī)語言相比,其特點(diǎn)是簡(jiǎn)潔和智能化,適應(yīng)科技專業(yè)人員的思維方式和書寫習(xí)慣,使得編程和調(diào)試效率大大提高。我們學(xué)習(xí)掌握MATLAB,也可以說是在科學(xué)工具上與國(guó)際接軌。
課程設(shè)計(jì)說明書 設(shè)計(jì)使用軟件
2.1MATLAB簡(jiǎn)介
MATLAB是由美國(guó)mathworks公司發(fā)布的主要面對(duì)科學(xué)計(jì)算、可視化以及交互式程序設(shè)計(jì)的高科技計(jì)算環(huán)境。它將數(shù)值分析、矩陣計(jì)算、科學(xué)數(shù)據(jù)可視化以及非線性動(dòng)態(tài)系統(tǒng)的建模和仿真等諸多強(qiáng)大功能集成在一個(gè)易于使用的視窗環(huán)境中,為科學(xué)研究、工程設(shè)計(jì)以及必須進(jìn)行有效數(shù)值計(jì)算的眾多科學(xué)領(lǐng)域提供了一種全面的解決方案,并在很大程度上擺脫了傳統(tǒng)非交互式程序設(shè)計(jì)語言(如C、Fortran)的編輯模式,代表了當(dāng)今國(guó)際科學(xué)計(jì)算軟件的先進(jìn)水平。
MATLAB和Mathematica、Maple并稱為四大數(shù)學(xué)軟件。它在數(shù)學(xué)類科技應(yīng)用軟件中在數(shù)值計(jì)算方面首屈一指。MATLAB可以進(jìn)行矩陣運(yùn)算、繪制函數(shù)和數(shù)據(jù)、實(shí)現(xiàn)算法、創(chuàng)建用戶界面、連
接其他編程語言的程序等,主要應(yīng)用于工程計(jì)算、控制設(shè)計(jì)、信號(hào)處理與通訊、圖像處理、信號(hào)檢測(cè)、金融建模設(shè)計(jì)與分析等領(lǐng)域。
MATLAB的基本數(shù)據(jù)單位是矩陣,它的指令表達(dá)式與數(shù)學(xué)、工程中常用的形式十分相似,故用MATLAB來解算問題要比用C,F(xiàn)ORTRAN等語言完成相同的事情簡(jiǎn)捷得多,并且MATLAB也吸收了像Maple等軟件的優(yōu)點(diǎn),使MATLAB成為一個(gè)強(qiáng)大的數(shù)學(xué)軟件。在新的版本中也加入了對(duì)C,F(xiàn)ORTRAN,C++,JAVA的支持??梢灾苯诱{(diào)用,用戶也可以將自己編寫的實(shí)用程序?qū)氲組ATLAB函數(shù)庫(kù)中方便自己以后調(diào)用,此外許多的MATLAB愛好者都編寫了一些經(jīng)典的程序,用戶可以直接進(jìn)行下載就可以用。
2.2matlab基本操作
Matlab中基本變量都是以矩陣的形式保存的。一幅圖像即是一個(gè)二維的矩陣。變量名區(qū)分大小寫,如a和A表示兩個(gè)不同的變量。圖像I中第i行第j列的像素用I(i,j)表示,其中行號(hào)和列號(hào)都從1開始計(jì)數(shù)。要了解更多關(guān)于Matlab的基本知識(shí),可看Matlab help下的Matlab目錄。
本實(shí)驗(yàn)可能用到的matlab函數(shù)有:zeros,imwrite,imread,imshow,F(xiàn)FT2,abs,log,min,max,查詢具體的函數(shù)用法可以在Matlab help中查找,或在Matlab command window中打(空格)函數(shù)名。
課程設(shè)計(jì)說明書
在Matlab command window中的命令在打回車后直接執(zhí)行。也可以在m-file editor中編寫程序,存盤為.m文件后,按Debug菜單下的Run,自動(dòng)逐條執(zhí)行命令。Debug菜單下還提供了設(shè)置斷點(diǎn)逐行執(zhí)行等調(diào)試命令。做本實(shí)驗(yàn)時(shí)可先在command window中熟悉Matlab命令與函數(shù),最后所有命令應(yīng)保存在一個(gè)m文件中,便于檢查和調(diào)試。
每次畫圖前可用figure命令新開一個(gè)圖像窗口,否則前一次顯示的圖像會(huì)被新的圖像覆蓋。也可用figure(n)命令規(guī)定當(dāng)前圖像窗口序號(hào)。
課程設(shè)計(jì)說明書
圖像幾何變換設(shè)計(jì)原理
3.1圖像幾何變換設(shè)計(jì)說明
數(shù)字圖像幾何變換是一種用途廣泛的圖像處理技術(shù),在圖像校正、圖像匹配、圖像變形等方面有廣泛用途。圖像的幾何變換需要兩個(gè)過程:空間變換和灰度插值,需要對(duì)離散數(shù)據(jù)組成的象素位置和間距進(jìn)行重新采樣,以構(gòu)成幾何變換后的新圖像,即根據(jù)離散的數(shù)字圖像重建二維連續(xù)函數(shù),再按新的像素位置和間距進(jìn)行采樣。
要求編程實(shí)現(xiàn)圖像的平移、縮放兩種幾何變換,插值分別采用最近鄰插值和雙線性插值。
在圖像的幾何變換中,通常包括圖像的平移、圖像的轉(zhuǎn)置、圖像的鏡像變換、圖像的縮放和圖像的旋轉(zhuǎn)等。
幾種圖像幾何變換中都是1:1的變換,而圖像的縮放操作會(huì)改變圖像的大小,產(chǎn)生的圖像中的像素可能在原圖中找不到相應(yīng)的像素點(diǎn),這樣就必須進(jìn)行近似處理。一般的方法是直接賦值為和它最相近的像素值,但也可以通過一些插值算法來計(jì)算。下面的代碼直接采用了前一種做法。
3.2 圖像平移理論基礎(chǔ)
圖像平移就是將圖像中所有的點(diǎn)都按照指定的平移量水平、垂直移動(dòng)。設(shè)(x0,y0)為原圖像上的一點(diǎn),圖像水平平移量為tx,垂直平移量為ty,則平移后點(diǎn)(x0,y0)坐標(biāo)將變?yōu)椋▁1,y1)。
顯然(x0,y0)和(x1,y1)的關(guān)系如下:
?x1???y1?x0?txy0?ty
用矩陣表示如下:
?x1??10tx??x0??y1???01ty??y0??????? ??1????001????1??
對(duì)該矩陣求逆,可以得到逆變換:
課程設(shè)計(jì)說明書
?x0??10?tx??x1??y0???01?ty??y1?
即?x0?????????y0???????10011??????x1?txy1?ty
這樣,平移后的圖像上的每一點(diǎn)都可以在原圖像中找到對(duì)應(yīng)的點(diǎn)。例如,對(duì)于新圖中的(0,0)像素,代入上面的方程組,可以求出對(duì)應(yīng)原圖中的像素(-tx,-ty)。如果tx或ty大于0,則(-tx,-ty)不在原圖中。對(duì)于不在原圖中的點(diǎn),可以直接將它的像素值統(tǒng)一設(shè)置為0或則255(對(duì)于灰度圖就是黑色或白色)。同樣,若有點(diǎn)不在原圖中,也就說明原圖中有點(diǎn)被移出顯示區(qū)域。如果不想丟失被移出的部分圖像,可以將新生成的圖像寬度擴(kuò)大|tx |,高度擴(kuò)大| ty |。
3.3圖像縮放的理論基礎(chǔ)
假設(shè)圖像x軸方向縮放比率為fx,y軸方向縮放比率為fy,那么原始圖中點(diǎn)(x0,y0)對(duì)應(yīng)與新圖中的點(diǎn)(x1,y1)的轉(zhuǎn)換矩陣為:
?x1??fx?y1???0?????1????00??x0??y0? fy0????01????1??0
其逆運(yùn)算如下:
00??x1??x0??1/fx?y0???0??y1?
即?x0?1/fy0???????y0????????01??1??1??0x1/fxy1/fy
例,當(dāng)fx=fy=0.5時(shí),圖像被縮一半大小,此時(shí)縮小后圖像中的(0,0)像素對(duì)應(yīng)于原圖中的(0,0)像素;(0,1)像素對(duì)應(yīng)于原圖中的(0,2)像素;(1,0)像素對(duì)應(yīng)于原圖中的(2,0)像素,以此類推。在原圖基礎(chǔ)上,每行隔一個(gè)像素進(jìn)行取點(diǎn),每隔一行進(jìn)行操作。其實(shí)是將原圖每行中的像素取值重復(fù)一遍,然后每行重復(fù)一次。
3.4雙線性插值法
雙線性插值[是利用了需要處理的原始圖像像素點(diǎn)周圍的四個(gè)像素點(diǎn)的相關(guān)陛,通過雙線眭算法計(jì)算得出的。對(duì)于一個(gè)目的坐標(biāo),通過向后映射法得到其在原始圖像的對(duì)應(yīng)的浮點(diǎn)坐標(biāo)(i+u,j+v),其中i,j均為非負(fù)整數(shù),u,v為[0,l]區(qū)間的浮點(diǎn)數(shù),則這個(gè)像素的值f(i+u,j+v)可由原圖像中坐標(biāo)為(i,j)、(i+l,j)、課程設(shè)計(jì)說明書
(i,j+1)、(i+1,j+1)所對(duì)應(yīng)的周圍四個(gè)像素的值決定,即:
f(i+u,j+v)=(1-u)×(1-v)×f(i,j)+(1-u)×V× f(i,j+1)+u×(1-v)×f(i+l,j)+u×v×f(i+l,j+1),其中f(i,j)表示源圖像(i,j)處的的像素值,這就是雙線性內(nèi)插值法。
如圖3.1所示,已知(0,0)、(0,1)、(1,0)、(1,1)四點(diǎn)的的灰度,可以由相鄰像素的灰度值f(0,0)和f(1,0)在X方向線性插值求出(x,0)的灰度f(x,0),由另外兩個(gè)相鄰像素f(0,1)和f(1,1)在X方向上線性插值可求出(x,1)的灰度f(x,1),最后由f(x,0),f(x,1)在Y方向上進(jìn)行線性插值就可以得到(x,y)的灰度f(x,y)。
在同一行內(nèi)根據(jù)待插值像素點(diǎn)與其前后的原圖像像素點(diǎn)的位置距離進(jìn)行加權(quán)線性插值,即離原圖像像素點(diǎn)越近的待插值像素點(diǎn),原圖像像素的加權(quán)系數(shù)就越大;行間根據(jù)待插值行與其上下的原圖像行間的距離進(jìn)行加權(quán)線性插值,即離原圖像行越近的待插值行,原圖像行的加權(quán)系數(shù)就越大。
圖3.1 雙線性插值原理
3.5最鄰近差值法
最簡(jiǎn)單的插值算法是最鄰近插值,也稱為零階插值。它輸出的像素灰度值就等于距離它映射到的位置最近的輸入像素的灰度值,最鄰近插值算法簡(jiǎn)單,在許多情況下都能得到令人滿意的結(jié)果,但是當(dāng)圖像中包含像素之間灰度級(jí)有變化的細(xì)微結(jié)構(gòu)時(shí),最鄰近算法會(huì)在圖像中產(chǎn)生人為加工的痕跡。雙線性插值算法計(jì)算
課程設(shè)計(jì)說明書
量比零階插值大,但縮放后圖像質(zhì)量高,不會(huì)出現(xiàn)像素值不連續(xù)的的情況,這樣就可以獲得一個(gè)令人滿意的結(jié)果[2,6]。
最鄰近點(diǎn)插值[6]取插值點(diǎn)的4個(gè)鄰點(diǎn)中距離最近的鄰點(diǎn)灰度值作為該點(diǎn)的灰度值。設(shè)插值點(diǎn)(i,j)到周邊4個(gè)鄰點(diǎn)fk(i,j)(k = 1,2,3,4)的距離為dk(k = 1,2,3,4),則:g(i,j)=fk(i,j),dl = min{d1,d2,d3,d4},l= 1,2,3,4。
4圖像變換總體設(shè)計(jì)
4.1基于MATLAB的GUI設(shè)計(jì)
圖形用戶界面(GUI)是用戶與計(jì)算機(jī)程序之間的交互方式,是用戶與計(jì)算機(jī)進(jìn)行信息交流的方式。計(jì)算機(jī)在屏幕顯示圖形和文本,若有揚(yáng)聲器還可產(chǎn)生 聲音。用戶通過輸入設(shè)備,如:鍵盤、鼠標(biāo)、跟蹤球、繪制板或麥克風(fēng),與計(jì)算機(jī)
課程設(shè)計(jì)說明書
通訊。用戶界面設(shè)定了如何觀看和如何感知計(jì)算機(jī)、操作系統(tǒng)或應(yīng)用程序。通常,多是根據(jù)悅目的結(jié)構(gòu)和用戶界面功能的有效性來選擇計(jì)算機(jī)或程序。圖形用戶界面或GUI是包含圖形對(duì)象,如:窗口、圖標(biāo)、菜單和文本的用戶界面。以某種方式 選擇或激活這些對(duì)象,通常引起動(dòng)作或發(fā)生變化。最常見的激活方法是用鼠標(biāo)或其它點(diǎn)擊設(shè)備去控制屏幕上的鼠標(biāo)指針的運(yùn)動(dòng)。
圖4.1GUI界面設(shè)計(jì)
通過MATLAB里面GUI功能自己設(shè)計(jì)出的關(guān)于本次課程設(shè)計(jì)的GUI界面,在這個(gè)界面中有預(yù)覽圖像,圖像平移,圖像縮放三個(gè)選項(xiàng)以及四個(gè)數(shù)據(jù)填充空格,來填寫關(guān)于圖像平移的長(zhǎng)度與寬度,以及縮放的比例。
4.2插入圖像
單擊GUI界面的預(yù)覽圖像按鈕,就可以選擇將自己想要進(jìn)行平移或縮放的圖片插入到這個(gè)程序里面去,并顯示出來。在這次課程設(shè)計(jì)當(dāng)中將“l(fā)ena.bmp”這張圖片插入到所做的程序當(dāng)中,如圖所示。
圖4.2預(yù)覽的圖片
課程設(shè)計(jì)說明書
插入的“l(fā)ena.bmp”圖片在MTALAB中所做的GUI圖形用戶界面中顯示了出來。
4.3圖像的平移變換
在所設(shè)計(jì)的GUI界面當(dāng)中,首先設(shè)定所要平移的像素長(zhǎng)度以及寬度,并且在設(shè)計(jì)當(dāng)中用正負(fù)符號(hào)來表示圖像的方向,設(shè)置完成之后,單擊圖片平移按鈕,就會(huì)彈出窗口當(dāng)中顯示出兩張圖片。通過左右兩張的圖片對(duì)比可以清楚的看到右邊圖片是經(jīng)過平移處理之后的。
4.3.1圖像右下方平移
圖4.3圖像右下方向移動(dòng)
如圖所示,在GUI界面中將參數(shù)設(shè)置成平移長(zhǎng)度為100,平移寬度為100之后,單擊圖像平移按鈕,在彈出來的窗口之中,明顯可以看到右邊的圖片向右下方向移動(dòng)了各100個(gè)像素點(diǎn),空出來的部分通過用黑像素點(diǎn)替換,以便能夠進(jìn)行清晰的對(duì)比結(jié)果。
4.3.2圖像左下方平移
課程設(shè)計(jì)說明書
圖 4.4圖像的左下方向移動(dòng)
如圖所示,在GUI界面中將參數(shù)設(shè)置成平移長(zhǎng)度為-100,平移寬度為100之后,單擊圖像平移按鈕,在彈出來的窗口之中,明顯可以看到右邊的圖片向左下方向移動(dòng)了各100個(gè)像素點(diǎn),空出來的部分通過用黑像素點(diǎn)替換,以便能夠進(jìn)行清晰的結(jié)果對(duì)比。
4.3.3圖像左上方平移
圖4.5圖像向左上方向移動(dòng)
課程設(shè)計(jì)說明書
如圖所示,在GUI界面中將參數(shù)設(shè)置成平移長(zhǎng)度為-100,平移寬度為-100之后,單擊圖像平移按鈕,在彈出來的窗口之中,明顯可以看到右邊的圖片向左上方向移動(dòng)了各100個(gè)像素點(diǎn),空出來的部分通過用黑像素點(diǎn)替換,以便能夠進(jìn)行清晰的結(jié)果對(duì)比。
4.3.4圖像右上平移
圖4.6圖像向右上方向移動(dòng)
如圖所示,在GUI界面中將參數(shù)設(shè)置成平移長(zhǎng)度為100,平移寬度為-100之后,單擊圖像平移按鈕,在彈出來的窗口之中,明顯可以看到右邊的圖片向右上方向移動(dòng)了各100個(gè)像素點(diǎn),空出來的部分通過用黑像素點(diǎn)替換,以便能夠進(jìn)行清晰的結(jié)果對(duì)比
課程設(shè)計(jì)說明書
4.4圖像的縮放變換
在所設(shè)計(jì)的GUI界面當(dāng)中,首先設(shè)定所要縮放的像素長(zhǎng)度以及寬度比例系數(shù),設(shè)置完成之后,單擊雙線性差值法縮放按鈕,就會(huì)彈出窗口,在當(dāng)中顯示出兩張圖片。通過左右兩張的圖片對(duì)比可以清楚的看到右邊圖片是經(jīng)過縮放處理之后的,在長(zhǎng)度寬度的比例上有所變化
4.4.1基于雙線性插值法的圖像縮放
課程設(shè)計(jì)說明書
圖4.6雙線性差值法的圖像縮放
如圖所示,在所設(shè)計(jì)的GUI界面中將參數(shù)設(shè)置成長(zhǎng)度縮放比例系數(shù)為2,寬度縮放比例系數(shù)為3之后,單擊雙線性插值法按鈕,在彈出來的窗口之中,明顯可以看到右邊的圖片相比較左邊的圖片,在長(zhǎng)度上是要比寬度上要放大了所設(shè)置的比例系數(shù)的,由于對(duì)應(yīng)的系數(shù)為2倍3倍,所以可以清楚明了的看到縮放效果。所以當(dāng)設(shè)置為長(zhǎng)寬系數(shù)形同時(shí),縮放效果是不明顯的。
4.4.2鄰近插值法的圖像縮放
課程設(shè)計(jì)說明書
圖4.7鄰近插值法的圖像縮放
如圖所示,在所設(shè)計(jì)的GUI界面中將參數(shù)設(shè)置成長(zhǎng)度縮放比例系數(shù)為2,寬度縮放比例系數(shù)為3之后,單擊鄰近插值法按鈕,在彈出來的窗口之中,明顯可以看到右邊的圖片相比較左邊的圖片,在長(zhǎng)度上是要比寬度上要放大了所設(shè)置的比例系數(shù)的,由于對(duì)應(yīng)的系數(shù)為2倍3倍,所以可以清楚明了的看到縮放效果。
5心得體會(huì)
通過這次課程設(shè)計(jì),使得我更加的掌握了在數(shù)字圖像處理方面的知識(shí),以及
課程設(shè)計(jì)說明書
加強(qiáng)了我對(duì)數(shù)字圖像處理這一門學(xué)科的興趣與愛好。此外還掌握了相關(guān)MATLAB的一些基本操作與應(yīng)用,能夠在以后的學(xué)習(xí)生活之中進(jìn)行一些簡(jiǎn)單的設(shè)計(jì)。雖然在這次設(shè)計(jì)實(shí)踐過程之中,遇到了重重困難,但是在經(jīng)過一次次的更正,一次次的修改之后,以及經(jīng)過網(wǎng)絡(luò)上多方面材料的查找與老師的悉心指導(dǎo),終于能夠最終的完成這次課程設(shè)計(jì)的題目要求。
兩周的時(shí)間不算很長(zhǎng),但是在這兩周的時(shí)間里面,我們卻學(xué)習(xí)到了很多之前多不能學(xué)習(xí)到的東西。在這次課程設(shè)計(jì)中不僅培養(yǎng)了獨(dú)立思考、動(dòng)手操作的能力,在各種其它能力上也都有了提高。更重要的是,我們學(xué)會(huì)了很多學(xué)習(xí)的方法。而這是日后最實(shí)用的,真的是受益匪淺。要面對(duì)社會(huì)的挑戰(zhàn),只有不斷的學(xué)習(xí)、實(shí)踐,再學(xué)習(xí)、再實(shí)踐。這對(duì)于我們的將來也有很大的幫助。
實(shí)驗(yàn)過程中,此次設(shè)計(jì)也讓我明白了有什么不懂不明白的地方要及時(shí)請(qǐng)教或上網(wǎng)查詢,只要認(rèn)真鉆研,動(dòng)腦思考,動(dòng)手實(shí)踐,就沒有弄不懂的知識(shí),收獲頗豐。也對(duì)團(tuán)隊(duì)精神的進(jìn)行了考察,讓我們?cè)诤献髌饋砀幽酰诔晒笠黄痼w會(huì)喜悅的心情。
參考文獻(xiàn)
[1]章毓晉.《圖像處理和分析教程》,人們郵電出版社,2009。
課程設(shè)計(jì)說明書
[2]龔聲蓉.《數(shù)字圖像處理與分析》,清華大學(xué)出版社,2006 [3]余成波.《數(shù)字圖像處理及MATLAB實(shí)現(xiàn)》,重慶大學(xué)出版社,2003 [4]姚敏.《數(shù)字圖像處理》,機(jī)械工業(yè)出版社,2006 [5]李顯宏.《MATLAB7.x界面設(shè)計(jì)與編程技巧》電子工業(yè)出版社,2006 [6]Kenneth R.Castleman著,朱志剛等譯,《數(shù)字圖像處理》,電子工業(yè)出版社,2006
1.MATLAB圖像平移程序
附錄
課程設(shè)計(jì)說明書
N1 = get(handles.cc,'String');N2 = get(handles.kk,'String');Tx = str2double(N1);Ty = str2double(N2);[m, n] = size(I);H = uint8(zeros(m+abs(Ty), n+abs(Tx)));if(Tx>0&&Ty>0)
H(1+Ty:m+Ty,1+Tx:n+Tx)= I;else if(Tx<0&&Ty<0)
H(1:m,1:n)= I;
else if(Tx<0&&Ty>0)
H(1+Ty:m+Ty,1:n)= I;
else
H(1:m,1+Tx:n+Tx)= I;
end
end end figure,subplot(1,2,1);imshow(I);title('原圖像');subplot(1,2,2);imshow(H);title('輸出圖像');2.MATLAB圖像雙線性插值法圖像縮放 I=imread('lena.bmp');[rows,cols]=size(I);N1=get(handles.chang,'String');N2=get(handles.kuan,'String');K1=str2double(N1);K2=str2double(N2);width = K1 * rows;
課程設(shè)計(jì)說明書
height = K2 * cols;Out = uint8(zeros(width,height));widthScale = rows/width;heightScale = cols/height;for x = 2:width2
oldX = x * widthScale;
oldY = y * heightScale;
if(oldX/double(uint16(oldX))== 1.0)&(oldY/double(uint16(oldY))== 1.0)
Out(x,y)= I(int16(oldX),int16(oldY));
else
a = double(uint16(oldX));
b = double(uint16(oldY));
x11 = double(I(a,b));
x12 = double(I(a,b+1));
x21 = double(I(a+1,b));
x22 = double(I(a+1,b+1));
Out(x,y)= uint8((b+1-oldY)*((oldX-a)*x21 +(a+1-oldX)*x11)+(oldY-b)*((oldX-a)*x22 +(a+1-oldX)* x12));
end
end end figure,subplot(1,2,1);imshow(I);title('原圖像')subplot(1,2,2);imshow(Out);title('輸出圖像');2.MATLAB圖像最鄰近差值法圖像縮放 I=imread('lena.bmp');[rows,cols]=size(I);
課程設(shè)計(jì)說明書
N1 = get(handles.chang,'String');N2 = get(handles.kuan,'String');K1 = str2double(N1);K2 = str2double(N2);width = K1 * rows;
height = K2 * cols;im2 = uint8(zeros(width,height));widthScale = rows/width;heightScale = cols/height;for x = 2:width2
oldX = x * widthScale;
oldY = y * heightScale;
if(oldX/double(uint16(oldX))== 1.0)&(oldY/double(uint16(oldY))== 1.0)
im2(x,y)= I(int16(oldX),int16(oldY));
else
a = double(round(oldX));
b = double(round(oldY));
im2(x,y)= I(a,b);
end
end end figure,subplot(1,2,1);imshow(I);title('原圖像')subplot(1,2,2);imshow(im2);title('輸出圖像')
第三篇:matlab數(shù)字圖像處理 膨脹和腐蝕
基于Matlab的腐蝕和膨脹的邊緣檢測(cè)
一、實(shí)驗(yàn)?zāi)康? 掌握運(yùn)用Matlab軟件對(duì)灰度與二值圖像的膨脹與腐蝕的處理方法。
二、實(shí)驗(yàn)環(huán)境(軟件條件):
Windws2000/XP
MATLAB 7.x
三、實(shí)驗(yàn)內(nèi)容:
1、圖像膨脹的Matlab實(shí)現(xiàn) ① 實(shí)驗(yàn)原理:
膨脹:給圖像中的對(duì)象邊界添加像素。
在操作中,輸出圖像中所有給定像素的狀態(tài)都是通過對(duì)輸入圖像的相應(yīng)像素及鄰域使用一定的規(guī)則進(jìn)行確定。在膨脹操作時(shí),輸出像素值是輸入圖像相應(yīng)像素鄰域內(nèi)所有像素的最大值。在二進(jìn)制圖像中,如果任何像素值為1,那么對(duì)應(yīng)的輸出像素值為1。
可以使用imdilate函數(shù)進(jìn)行圖像膨脹,imdilate函數(shù)需要兩個(gè)基本輸入?yún)?shù),即待處理的輸入圖像和結(jié)構(gòu)元素對(duì)象。結(jié)構(gòu)元素對(duì)象可以是strel函數(shù)返回的對(duì)象,也可以是一個(gè)自己定義的表示結(jié)構(gòu)元素鄰域的二進(jìn)制矩陣。此外,imdilate還可以接受兩個(gè)可選參數(shù):PADOPT(padopt)——影響輸出圖片的大小、PACKOPT(packopt).——說明輸入圖像是否為打包的二值圖像(二進(jìn)制圖像)。② 實(shí)驗(yàn)步驟:
A、首先創(chuàng)建一個(gè)包含矩形對(duì)象的二值圖像矩陣。R=zeros(9,10);R(4:6,4:7)=1 R = 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 0 0 0 0 0 0 1 1 1 1 0 0 0 0 0 0 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 B、使用一個(gè)3×3的正方形結(jié)構(gòu)元素對(duì)象對(duì)創(chuàng)建的圖像進(jìn)行膨脹。
C=strel('square',3)C = Flat STREL object containing 9 neighbors.Neighborhood: 1 1 1 1 1 1 1 1 1 C、將圖像R和結(jié)構(gòu)元素C傳遞給imdilate函數(shù)。R1=imdilate(R,C)R1 = 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 0 0 0 0 1 1 1 1 1 1 0 0 0 0 1 1 1 1 1 1 0 0 0 0 1 1 1 1 1 1 0 0 0 0 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 D、顯示結(jié)果: imshow(R,'notruesize')imshow(R1,'notruesize')③ 實(shí)驗(yàn)結(jié)果: 膨脹前后效果圖:
2、圖像腐蝕的Matlab實(shí)現(xiàn) ① 實(shí)驗(yàn)原理:
腐蝕:刪除對(duì)象邊界某些像素。
在操作中,輸出圖像中所有給定像素的狀態(tài)都是通過對(duì)輸入圖像的相應(yīng)像素及鄰域使用一定的規(guī)則進(jìn)行確定。在腐蝕操作中,輸出像素值是輸入圖像相應(yīng)像素鄰域內(nèi)所有像素的最小值。在二進(jìn)制圖像中,如果任何一個(gè)像素值為0,那么對(duì)應(yīng)的輸出像素值為0。
可以使用imerode函數(shù)進(jìn)行圖像腐蝕。imerode函數(shù)需要兩個(gè)基本輸入?yún)?shù):待處理的輸入圖像以及結(jié)構(gòu)元素對(duì)象。此外,imerode函數(shù)還可以接受3個(gè)可選參數(shù):PADOPT(padopt)——影響輸出圖片的大小、PACKOPT(packopt).——說明輸入圖像是否為打包的二值圖像(二進(jìn)制圖像)。M——指定原始圖像的行數(shù)。② 實(shí)驗(yàn)內(nèi)容及步驟:
A、讀取圖像cameraman.tif(該圖像是Matlab當(dāng)前目錄下自帶的圖片)R=imread('cameraman.tif');B、創(chuàng)建一個(gè)任意形狀的結(jié)構(gòu)元素對(duì)象 C=strel('arbitrary',eye(5));C、以圖像R和結(jié)構(gòu)元素C為參數(shù)調(diào)用imerode函數(shù)進(jìn)行腐蝕操作。R1=imerode(R,C);D、顯示操作結(jié)果 imshow(R); figure,imshow(C); ③ 實(shí)驗(yàn)結(jié)果:
圖像cameraman.tif 腐蝕前后的效果對(duì)比:
3、膨脹和腐蝕聯(lián)合操作 ① 實(shí)驗(yàn)內(nèi)容及步驟: A、創(chuàng)建結(jié)構(gòu)元素: clear;close all C= strel('rectangle',[40 30]);
%結(jié)構(gòu)元素必須具有適當(dāng)?shù)拇笮?既可以刪電流線又可以刪除矩形.B、使用結(jié)構(gòu)元素腐蝕圖像:
%將會(huì)刪除所有直線,但也會(huì)縮減矩形 R=imread('circbw.tif');R1=imerode(R,C);imshow(R1);figure,imshow(R);C、恢復(fù)矩形為原有大小,使用相同的結(jié)構(gòu)元素對(duì)腐蝕過的圖像進(jìn)行膨脹.R2=imdilate(R1,C);figure,imshow(R2);② 實(shí)驗(yàn)結(jié)果: 最終效果如下圖: 原始圖像 腐蝕后的圖像 膨脹后的圖像
4、邊緣檢測(cè) ① 實(shí)驗(yàn)原理:
對(duì)于一副灰度二進(jìn)制圖像,如果圖像像素值為1,則該像素的狀態(tài)為ON,如果其像素值為0,則該像素的狀態(tài)為OFF。在一副圖像中,如果圖像某個(gè)像素滿足以下兩個(gè)條件:
1.該像素狀態(tài)為ON; 2.該像素鄰域中有一個(gè)或多個(gè)像素狀態(tài)為OFF。則認(rèn)為該像素為邊緣像素。
Matlab中提供了專門的函數(shù)bwperim,可以用于判斷一副二進(jìn)制圖像中的哪些像素為邊緣像素。② 實(shí)驗(yàn)內(nèi)容及步驟:
以下程序代碼示例就是利用bwperim函數(shù),對(duì)圖像circbw.tif進(jìn)行邊緣檢測(cè),其邊緣像素檢測(cè)效果如尾圖。clear;close all R=imread('circbw.tif');R1=bwperim(R);
imshow(R); figure,imshow(R1); ② 實(shí)驗(yàn)結(jié)果:
心得體會(huì):
本次實(shí)驗(yàn)利用形態(tài)學(xué)運(yùn)算—腐蝕和膨脹對(duì)圖像進(jìn)行了處理。數(shù)學(xué)形態(tài)學(xué)的基本思想是:用具有一定形態(tài)的結(jié)構(gòu)元素去量度和提取圖像中的對(duì)應(yīng)形狀,以達(dá)到圖像分析和識(shí)別的目的。它的優(yōu)點(diǎn)有:有效濾除噪聲、保留圖像中原有信息、算法易于用并行處理方法有效實(shí)現(xiàn)等等。
總的來說,在此次實(shí)驗(yàn)中遇到了較多問題,經(jīng)過對(duì)相關(guān)知識(shí)的復(fù)習(xí)以及對(duì)相關(guān)資料的查詢,才逐個(gè)地解決了。在今后的實(shí)驗(yàn)課中要有充分的準(zhǔn)備與預(yù)習(xí),不懂的問題要提前查資料,這樣在實(shí)驗(yàn)中才會(huì)胸有成竹,才不會(huì)手忙腳亂。
第四篇:《數(shù)字圖像處理》綜合設(shè)計(jì)
《數(shù)字圖像處理》綜合設(shè)計(jì)
學(xué)習(xí)委員以班級(jí)為單位刻錄成光盤,每個(gè)人建立一個(gè)目錄,目錄名為(學(xué)號(hào)+姓名)如:0804631001趙書紅
個(gè)人目錄中要上交的文件:程序源文件+設(shè)計(jì)報(bào)告 只交電子版,不需打印。以上工作務(wù)必于14周前完成。
1,設(shè)計(jì)目的
提高分析問題,解決問題的能力,進(jìn)一步鞏固數(shù)字圖像處理系統(tǒng)中的基本原理與方法.熟悉掌握一門計(jì)算機(jī)語言,可以進(jìn)行數(shù)字圖像的應(yīng)用處理的開發(fā)設(shè)計(jì).2,設(shè)計(jì)選題
2.1 【選題一】簡(jiǎn)單圖像處理系統(tǒng)
整個(gè)系統(tǒng)要完成的基本功能大致如下: 1能對(duì)圖像文件(bmp, jpg, tiff, gif等)進(jìn)行打開,保存,另存,退出等功能操作;2數(shù)字圖像的統(tǒng)計(jì)信息功能:包括直方圖的統(tǒng)計(jì)及繪制等;3數(shù)字圖像的增強(qiáng)處理功能:(1)空域中的運(yùn)算,各種空間域平滑算法(如局部平滑濾波法,中值濾波等),銳化算法(如梯度銳化法,高通濾波等)4,圖像分割:(1)點(diǎn),線(hough變換檢測(cè)直線),及邊緣檢測(cè)(梯度算子,拉普拉斯算子等);(2)區(qū)域分割包括閾值分割,區(qū)域生長(zhǎng),分裂合并等;5,數(shù)字圖像的變換:普通傅立葉變換(ft)與逆變換(ift),快速傅立葉變換(fft)與逆變換(ifft),離散余弦變換(DCT),小波變換等.6,二值圖像處理:膨脹,腐蝕,開運(yùn)算與比運(yùn)算.在實(shí)現(xiàn)整個(gè)系統(tǒng)的時(shí)候,必須有1,2,3中的這些基本內(nèi)容,可以根據(jù)個(gè)人興趣增加其他的內(nèi)容.2.2【課程設(shè)計(jì)選題二】汽車車牌中的數(shù)字識(shí)別 整個(gè)系統(tǒng)要完成的基本功能大致如下: 1,能對(duì)圖像文件(bmp, jpg, tiff, gif等)進(jìn)行打開,保存,另存,打印,退出等功能操作;2,圖像預(yù)處理功能:(1)直方圖的統(tǒng)計(jì)及繪制,根據(jù)此找到圖像的閾值點(diǎn);(2)可將圖像的各種幾何矯正變換;(3)彩色圖像的灰度化變換等,一般灰度圖像的二值化處理等;(4)數(shù)字圖像的增強(qiáng)處理功能:空域中的點(diǎn)運(yùn)算,直方圖的均衡化,各種空間域平滑算法(如局部平滑濾波法,中值濾波等),銳化算法(如梯度銳化法,高通濾波等);色彩增強(qiáng):偽彩色增強(qiáng),真彩色增強(qiáng)等;3, 車牌的定位 4,字符識(shí)別(1)模板匹配;(2)神經(jīng)網(wǎng)絡(luò);此系統(tǒng)主要是對(duì)含有汽車車牌的圖像進(jìn)行處理,并對(duì)車牌中的數(shù)字字符進(jìn)行識(shí)別.3, 課程設(shè)計(jì)方案制定
1,程序運(yùn)行環(huán)境是Windows平臺(tái).2,開發(fā)工具選用VC++等都可以.3,以組件化的思想構(gòu)建整個(gè)軟件系統(tǒng).具體的功能模塊根據(jù)選定的不同題目做合理的劃分.4,課程設(shè)計(jì)的一般步驟
選題與搜集資料:選擇課題,進(jìn)行系統(tǒng)調(diào)查,搜集資料.分析與設(shè)計(jì):根據(jù)搜集的資料,進(jìn)行功能分析,并對(duì)系統(tǒng)功能與模塊劃分等設(shè)計(jì).程序設(shè)計(jì):運(yùn)用掌握的語言,編寫程序,實(shí)現(xiàn)所設(shè)計(jì)的功能.調(diào)試與測(cè)試:自行調(diào)試程序,同學(xué)之間交叉測(cè)試程序,并記錄測(cè)試情況.驗(yàn)收與評(píng)分:指導(dǎo)教師對(duì)每個(gè)成員開發(fā)的程序進(jìn)行綜合驗(yàn)收,結(jié)合設(shè)計(jì)報(bào)告,根據(jù)課程設(shè)計(jì)成績(jī)的評(píng)定方法,評(píng)出成績(jī).5,要求
5.1總體要求
1,要充分認(rèn)識(shí)課程設(shè)計(jì)對(duì)培養(yǎng)自己的重要性,認(rèn)真做好設(shè)計(jì)前的各項(xiàng)準(zhǔn)備工作.尤其是對(duì)編程軟件的使用有基本的認(rèn)識(shí).2,獨(dú)立按時(shí)完成規(guī)定的工作任務(wù),不得弄虛作假,不準(zhǔn)抄襲他人內(nèi)容,否則成績(jī)以不及格計(jì).5.2實(shí)施要求
1,理解各種圖像處理方法確切意義.2,獨(dú)立進(jìn)行方案的制定,系統(tǒng)結(jié)構(gòu)設(shè)計(jì)要合理.3,在寫課設(shè)報(bào)告時(shí),必須要將主要函數(shù)的功能和參數(shù)做詳細(xì)的說明.4,通過多幅不同形式的圖像來檢測(cè)該系統(tǒng)的穩(wěn)定性和正確性.5.3 課程設(shè)計(jì)報(bào)告的內(nèi)容及要求 學(xué)生應(yīng)在規(guī)定的時(shí)間內(nèi)完成課程設(shè)計(jì)報(bào)告一份(字?jǐn)?shù)不限),報(bào)告的內(nèi)容和要求如下
5.3.1 報(bào)告的格式內(nèi)容如下: 1.目的與要求
這部分主要說明本課程設(shè)計(jì)的目的,任務(wù)和要求;2.設(shè)計(jì)的內(nèi)容
介紹系統(tǒng)中所設(shè)計(jì)的主要功能和原理方法;3.總體方案設(shè)計(jì)
根據(jù)課程設(shè)計(jì)的具體情況,描述系統(tǒng)的具體構(gòu)架,包括:功能模塊的劃分,系統(tǒng)運(yùn)行的環(huán)境,選用的工具及主要實(shí)現(xiàn)功能的原理.4.各個(gè)功能模塊的主要實(shí)現(xiàn)程序
主要的功能實(shí)現(xiàn)和函數(shù)要進(jìn)行詳細(xì)的說明,包括其用法,使用范圍,及參數(shù)等.5.測(cè)試和調(diào)試
按課程設(shè)計(jì)要求,選用多幅圖像對(duì)程序進(jìn)行測(cè)試,并提供系統(tǒng)的主要功能實(shí)現(xiàn)的效果圖.并在調(diào)試中發(fā)現(xiàn)的問題做說明.6.課程設(shè)計(jì)總結(jié)與體會(huì)
主要說明設(shè)計(jì)中學(xué)到的東西和取得的經(jīng)驗(yàn)總結(jié),心得體會(huì).7.參考文獻(xiàn)
寫出具體的主要參考文獻(xiàn),標(biāo)明其作者,出處,年代,若是期刊文章,還需要給出期刊名.網(wǎng)絡(luò)的文章要給出網(wǎng)址.5.3.2 報(bào)告要求
1,必須按照以上格式書寫報(bào)告.2,必須對(duì)課程設(shè)計(jì)總體方案進(jìn)行說明.3,說明各個(gè)功能模塊的具體實(shí)現(xiàn),對(duì)用到的主要函數(shù)及參數(shù)要做具體的說明,.4,不要在報(bào)告中粘貼程序代碼
6,課程設(shè)計(jì)的質(zhì)量標(biāo)準(zhǔn)與成績(jī)?cè)u(píng)定
本課程的考核方式為:對(duì)學(xué)生單獨(dú)進(jìn)行驗(yàn)收和答辯,學(xué)生必須演示程序,并回答教師提出的問題.根據(jù)驗(yàn)收答辯的情況和課程設(shè)計(jì)報(bào)告的質(zhì)量綜合給出成績(jī).課程設(shè)計(jì)成績(jī)考核采用:優(yōu),良,中,及格,不及格五級(jí)評(píng)分制,評(píng)分標(biāo)準(zhǔn)如: 優(yōu)秀:格式完整;課設(shè)總體方案正確,詳細(xì),系統(tǒng)中完成了所要求的所有功能;有實(shí)現(xiàn)功能的必要流程圖.設(shè)計(jì)說明書層次清楚,條理分明,理論分析正確,書寫工整.回答問題快速準(zhǔn)確.對(duì)善于獨(dú)立思考設(shè)計(jì)中有所創(chuàng)新的學(xué)生優(yōu)先考慮.良好:格式完整;設(shè)計(jì)方案合理,制作規(guī)范,系統(tǒng)基本滿足要求;有實(shí)現(xiàn)功能的必要流程圖.設(shè)計(jì)說明書層次比較清楚;回答問題準(zhǔn)確;書寫工整.中:格式正確,設(shè)計(jì)方案基本正確,完成功能基本符合要求,設(shè)計(jì)說明書僅存在少量的問題(如:方案分析有少量錯(cuò)誤,條理不十分清晰,流程圖,書寫不大規(guī)范等).能夠正確回答問題.及格:設(shè)計(jì)方案基本正確,實(shí)現(xiàn)了主要的功能,有小部分功能尚未實(shí)現(xiàn),設(shè)計(jì)說明書存在一些問題.回答問題基本正確.不及格:極不認(rèn)真,或者根本不交課程設(shè)計(jì)程序和報(bào)告的.另外,對(duì)于請(qǐng)人代做,完全照抄他人課題.請(qǐng)人代寫抄襲他人說明書,嚴(yán)重違反紀(jì)律者以不及格論處.
第五篇:《數(shù)字圖像處理》
實(shí)驗(yàn)五 圖像的幾何變換
一.實(shí)驗(yàn)?zāi)康募耙?/p>
掌握?qǐng)D像幾何變換的基本原理,熟練掌握數(shù)字圖像的縮放、旋轉(zhuǎn)、平移、鏡像和轉(zhuǎn)置的基本原理及其MATLAB編程實(shí)現(xiàn)方法。
二、實(shí)驗(yàn)內(nèi)容
(一)研究以下程序,分析程序功能;輸入執(zhí)行各命令行,認(rèn)真觀察命令執(zhí)行的結(jié)果。熟悉程序中所使用函數(shù)的調(diào)用方法,改變有關(guān)參數(shù),觀察試驗(yàn)結(jié)果。
1.圖像縮放 clear all, close all I = imread('cameraman.tif');Scale = 1.35;
% 將圖像放大1.35倍
J1 = imresize(I, Scale, 'nearest');
% using the nearest neighbor interpolation J2 = imresize(I, Scale, 'bilinear');
% using the bilinear interpolation imshow(I), title('Original Image');figure, imshow(J1), title('Resized Image--using the nearest neighbor interpolation ');figure, imshow(J2), title('Resized Image--using the bilinear interpolation ');help imresize
% 查看imresize使用幫助
1.95倍
I = imread('cameraman.tif');Scale = 1.96;
% 將圖像放大1.96倍
J1 = imresize(I, Scale, 'nearest');
% using the nearest neighbor interpolation J2 = imresize(I, Scale, 'bilinear');
% using the bilinear interpolation imshow(I), title('Original Image');figure, imshow(J1), title('Resized Image--using the nearest neighbor interpolation ');figure, imshow(J2), title('Resized Image--using the bilinear interpolation ');
說明:
?注意觀察不同插值方法的圖像表現(xiàn); ?改變圖像縮放因子Scale,重做上述實(shí)驗(yàn)。2.圖像旋轉(zhuǎn)
clear all, close all I = imread('cameraman.tif');Theta = 45;
% 將圖像逆時(shí)針旋轉(zhuǎn)45?。
J1 = imrotate(I, Theta, 'nearest');
% using the nearest neighbor interpolation Theta =-45;
% 將圖像順時(shí)針旋轉(zhuǎn)45?。
J2 = imrotate(I, Theta, 'bilinear', 'crop');% using bilinear interpolation and crops the output image imshow(I), title('Original Image');figure, imshow(J1), title('Rotated Image--using the nearest neighbor interpolation ');figure, imshow(J2), title(' Rotated Image--using the bilinear interpolation ');% 查看imrotate使用幫助 help imrotate %-------
圖像旋轉(zhuǎn)30順時(shí)針逆時(shí)針
clear all, close all I = imread('cameraman.tif');Theta = 30;
% 將圖像逆時(shí)針旋轉(zhuǎn)30。
J1 = imrotate(I, Theta, 'nearest');
% using the nearest neighbor interpolation Theta =-30;
% 將圖像順時(shí)針旋轉(zhuǎn)30。
J2 = imrotate(I, Theta, 'bilinear', 'crop');% using bilinear interpolation and crops the output image imshow(I), title('Original Image');figure, imshow(J1), title('Rotated Image--using the nearest neighbor interpolation ');figure, imshow(J2), title(' Rotated Image--using the bilinear interpolation ');7 說明:
?注意觀察不同插值方法和輸出圖像后處理方法的圖像表現(xiàn); ?改變旋轉(zhuǎn)角度大小和方向,重做上述實(shí)驗(yàn)。
3.圖像水平鏡象
clear all, close all I = imread('cameraman.tif');I1 = flipdim(I,2);
I2 = flipdim(I,1);figure(1), subplot(1,2,1), imshow(I);subplot(1,2,2), imshow(I1);figure(2), subplot(2,1,1), imshow(I);subplot(2,1,2), imshow(I2);%----
(二)用MATLAB編程實(shí)現(xiàn)以下圖像幾何變換(參考自編講義相關(guān)章節(jié))
1.圖像扭曲變換 2.球面變換
三、實(shí)驗(yàn)設(shè)備
1.PIII以上微機(jī); 2.MATLAB6.5;
四、預(yù)習(xí)與思考
1.預(yù)習(xí)實(shí)驗(yàn)內(nèi)容,閱讀教材熟悉實(shí)驗(yàn)原理;
2.查閱資料,熟悉實(shí)驗(yàn)中涉及的有關(guān)MATLAB函數(shù);
3.利用課余時(shí)間,采用MATLAB底層函數(shù)編程實(shí)現(xiàn)實(shí)驗(yàn)內(nèi)容
(二)中的圖像平移、圖像轉(zhuǎn)置等幾何變換。
五、實(shí)驗(yàn)報(bào)告要求
1.簡(jiǎn)述試驗(yàn)的目的和試驗(yàn)原理;
2.?dāng)⑹龈鞫纬绦蚬δ埽淖冇嘘P(guān)函數(shù)的參數(shù),分析比較實(shí)驗(yàn)結(jié)果; 3.打印出所編寫的實(shí)驗(yàn)程序。4.寫出本實(shí)驗(yàn)的心得體會(huì)及意見。
實(shí)驗(yàn)六
數(shù)字圖像處理應(yīng)用
一.實(shí)驗(yàn)?zāi)康募耙?/p>
1.利用MATLAB提供的圖像處理函數(shù)實(shí)現(xiàn)圖像中物體屬性的測(cè)量; 2.訓(xùn)練綜合運(yùn)用MATLAB圖像處理函數(shù)的能力; 3.了解數(shù)字圖像處理基本應(yīng)用。
二、實(shí)驗(yàn)內(nèi)容
以大米粒特性測(cè)量為例,綜合應(yīng)用課程中圖像分割、形態(tài)學(xué)濾波、圖像增強(qiáng)、圖像特征提取等圖像處理方法,實(shí)現(xiàn)大米粒特性自動(dòng)測(cè)量。實(shí)驗(yàn)過程簡(jiǎn)述:
1. 讀取和顯示圖像 2. 估計(jì)圖像背景 3. 獲取背景均勻的圖像 4. 圖像增強(qiáng) 5. 圖像二值化分割 6. 區(qū)域標(biāo)記及為彩色處理
7. 測(cè)量圖像中的區(qū)域特性(面積、質(zhì)心等)
8.統(tǒng)計(jì)大米粒的特性分布規(guī)律。
(一)研究以下程序,分析程序功能;輸入執(zhí)行各命令行,認(rèn)真觀察命令執(zhí)行的結(jié) 果。熟悉程序中所使用函數(shù)的調(diào)用方法,改變有關(guān)參數(shù),觀察試驗(yàn)結(jié)果。
% Read and Display an Image clear, close all,close all;I = imread('rice.png');
figure, imshow(I)
% Use Morphological Opening to Estimate the Background
background = imopen(I,strel('disk',15));
figure, imshow(background);
%Display the Background Approximation as a Surface
figure, surf(double(background(1:8:end,1:8:end))),zlim([0 255]);set(gca,'ydir','reverse');% Subtract the Background Image from the Original Image I2 = imsubtract(I,background);figure, imshow(I2)% Adjust the Image Contrast I3 = imadjust(I2, stretchlim(I2), [0 1]);figure, imshow(I3);% Apply Thresholding to the Image level = graythresh(I3);bw = im2bw(I3,level);figure, imshow(bw)% Determine the Number of Objects in the Image [labeled,numObjects] = bwlabel(bw,4);
% Label components.numObjects % Examine the Label Matrix RGB_label = label2rgb(labeled, @spring, 'c', 'shuffle');figure, imshow(RGB_label);% Measure Object Properties in the Image graindata = regionprops(labeled,'basic')allgrains = [graindata.Area];% Compute Statistical Properties of Objects in the Image max(allgrains);biggrain = find(allgrains==695)mean(allgrains);figure, hist(allgrains,20);12
(詳見MATLAB IPT的 幫助文檔demo中的Correcting Nonuniform Illumination)
(二)查看MATLAB IPT 幫助文檔,研究其它應(yīng)用演示
三、實(shí)驗(yàn)設(shè)備 1.PIII以上微機(jī); 2.MATLAB6.5;
四、預(yù)習(xí)與思考
1.預(yù)習(xí)實(shí)驗(yàn)內(nèi)容,閱讀教材熟悉實(shí)驗(yàn)原理; 2.查閱資料,熟悉實(shí)驗(yàn)中涉及的有關(guān)函數(shù)。
3.利用課余時(shí)間,采用MATLAB函數(shù)編程實(shí)現(xiàn)實(shí)驗(yàn)內(nèi)容
(二)。
五、實(shí)驗(yàn)報(bào)告要求
1.簡(jiǎn)述試驗(yàn)的目的和試驗(yàn)原理;
2.?dāng)⑹龈鞫纬绦蚬δ埽淖冇嘘P(guān)函數(shù)的參數(shù),分析比較實(shí)驗(yàn)結(jié)果; 3.打印出所編寫的實(shí)驗(yàn)程序。4.寫出本實(shí)驗(yàn)的心得體會(huì)及意見。