第2章數(shù)字圖像處理中的基本運(yùn)算1NEW_第1頁(yè)
第2章數(shù)字圖像處理中的基本運(yùn)算1NEW_第2頁(yè)
第2章數(shù)字圖像處理中的基本運(yùn)算1NEW_第3頁(yè)
第2章數(shù)字圖像處理中的基本運(yùn)算1NEW_第4頁(yè)
第2章數(shù)字圖像處理中的基本運(yùn)算1NEW_第5頁(yè)
已閱讀5頁(yè),還剩253頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

第2章數(shù)字圖像處理中的基本運(yùn)算基本運(yùn)算的類型點(diǎn)運(yùn)算代數(shù)運(yùn)算幾何運(yùn)算灰度級(jí)插值2.1圖像基本運(yùn)算的概述(Introduction)

圖像基本運(yùn)算點(diǎn)運(yùn)算(PointOperation)代數(shù)運(yùn)算(AlgebraOperation)邏輯運(yùn)算(LogicalOperation)

幾何運(yùn)算(GeometricOperation)按圖像處理運(yùn)算的數(shù)學(xué)特征,圖像基本運(yùn)算可分為:圖像基本運(yùn)算的分類圖像處理基本運(yùn)算概述根據(jù)數(shù)字圖像處理運(yùn)算中輸入信息與輸出信息的類型,具有代表性的圖像處理典型算法從功能上具有以下幾種:(1)單幅圖像單幅圖像(2)多幅圖像單幅圖像(3)單幅或多幅圖像數(shù)值/符號(hào)基本運(yùn)算類型第一類運(yùn)算功能是圖像處理中最基本的功能;根據(jù)輸入圖像得到輸出圖像運(yùn)算的數(shù)學(xué)特征,可將圖像處理運(yùn)算方式分為:點(diǎn)運(yùn)算代數(shù)運(yùn)算幾何運(yùn)算補(bǔ)充:MATLAB圖像處理命令/1、圖像的讀取和顯示一、圖像的讀取A=imread(FILENAME,FMT)FILENAME指定圖像文件的完整路徑和文件名。如果在work工作目錄下只需提供文件名。FMT為圖像文件的格式對(duì)應(yīng)的標(biāo)準(zhǔn)擴(kuò)展名。I_1=imread('D:\10.06.08nir\TTC10377.BMP');%讀入圖像二、圖像的寫(xiě)入imwrite(A,F(xiàn)ILENAME,FMT)FILENAME參數(shù)指定文件名。FMT為保存文件采用的格式。imwrite(I6,'nirdilatedisk2TTC10373.bmp');三、圖像的顯示imshow(I,[lowhigh])I為要顯示的圖像矩陣。[lowhigh]為指定顯示灰度圖像的灰度范圍。高于high的像素被顯示成白色;低于low的像素被顯示成黑色;介于High和low之間的像素被按比例拉伸后顯示為各種等級(jí)的灰色。

figure;imshow(I6);title('TheMainPassPartofTTC10373');figure;%創(chuàng)建一個(gè)新的窗口figure;subplot(m,n,p);imshow(I);Subplot(m,n,p)含義為:打開(kāi)一個(gè)有m行n列圖像位置的窗口,并將焦點(diǎn)位于第p個(gè)位置上。I1=imread('lena.BMP');%讀入圖像figure;imshow(I1);title('TheMainPassPartoflena');1.定義2:分類一、點(diǎn)運(yùn)算3:應(yīng)用1、定義

所謂點(diǎn)運(yùn)算是指像素值(像素點(diǎn)的灰度值)通過(guò)運(yùn)算之后,可以改善圖像的顯示效果。這是一種像素的逐點(diǎn)運(yùn)算。點(diǎn)運(yùn)算與相鄰的像素之間沒(méi)有運(yùn)算關(guān)系,是原始圖像與目標(biāo)圖像之間的影射關(guān)系。是一種簡(jiǎn)單但卻十分有效的圖像處理方法。點(diǎn)運(yùn)算又稱為“對(duì)比度增強(qiáng)”、“對(duì)比度拉伸”、“灰度變換”點(diǎn)運(yùn)算實(shí)際上是灰度到灰度的映射過(guò)程設(shè)

輸入圖像為A(x,y)輸出圖像為B(x,y)則點(diǎn)運(yùn)算可表示為:

B(x,y)=f[A(x,y)]顯然點(diǎn)運(yùn)算不會(huì)改變圖像內(nèi)像素點(diǎn)之間的空間位置關(guān)系?;叶戎狈綀D描述了一副圖像的灰度級(jí)統(tǒng)計(jì)信息,主要應(yīng)用于圖像分割和圖像灰度變換等處理過(guò)程中。從數(shù)學(xué)角度來(lái)說(shuō),圖像直方圖描述圖像各個(gè)灰度級(jí)的統(tǒng)計(jì)特性,它是圖像灰度值的函數(shù),統(tǒng)計(jì)一幅圖像中各個(gè)灰度級(jí)出現(xiàn)的次數(shù)或概率。歸一化直方圖可以直接反映不同灰度級(jí)出現(xiàn)的比率。橫坐標(biāo)為圖像中各個(gè)像素點(diǎn)的灰度級(jí)別,縱坐標(biāo)表示具有各個(gè)灰度級(jí)別的像素在圖像中出現(xiàn)的次數(shù)或概率。imhist(I);%灰度直方圖I=imread(‘red.bmp’);%讀入圖像

figure;%打開(kāi)新窗口[M,N]=size(I);%計(jì)算圖像大小[counts,x]=imhist(I,32);%計(jì)算有32個(gè)小區(qū)間的灰度直方圖counts=counts/M/N;%計(jì)算歸一化灰度直方圖各區(qū)間的值stem(x,counts);%繪制歸一化直方圖一、圖像直方圖圖像直方圖歸一化/2、圖像的點(diǎn)運(yùn)算二、灰度的線性變換Fa>1時(shí),輸出圖像的對(duì)比度將增大;Fa<1時(shí),輸出圖像對(duì)比度將減小。Fa=1且Fb非零時(shí),所有像素的灰度值上移或下移,使整個(gè)圖像更暗或更亮。Fa<0,暗區(qū)變亮,亮區(qū)變暗。2、分類(1)線性點(diǎn)運(yùn)算

輸出灰度級(jí)與輸入灰度級(jí)呈線性關(guān)系的點(diǎn)運(yùn)算。即:255255DADB0f(DA)=aDA+bb①如果a>1,輸出圖像的對(duì)比度增大25521848提高對(duì)比度2550線性點(diǎn)運(yùn)算的應(yīng)用1)如果a>1,輸出圖像的對(duì)比度增大(灰度擴(kuò)展)2.4對(duì)比度增大變換前變換后255178482550sr提高對(duì)比度舉例a=2,b=50②

如果a<1,輸出圖像的對(duì)比度減小2552551420降低對(duì)比度降低對(duì)比度舉例0255255③

如果a=1,b≠0,操作僅使所有像素的灰度值上移或下移,其效果是使整個(gè)圖像更暗或更亮0255255整個(gè)圖像更亮0255255整個(gè)圖像更暗④如果a=1,b=0時(shí),輸出、輸入圖像相同0255255⑤如果a為負(fù)值,暗區(qū)域?qū)⒆兞?,亮區(qū)域?qū)⒆儼?2552550255255例2-2a=imread('cameraman.tif');%讀入cameraman圖像figure(1);imshow(a);b1=a+50;%b1=a+45圖像灰度值增加50figure(2);imshow(b1);b2=1.2*a;%b=1.2*a圖像對(duì)比度增大figure(3);imshow(b2);b3=0.65*a;%b=0.65*a圖像對(duì)比度減少figure(4);imshow(b3);b4=-double(a)+255;%b4=-1*a+255,圖像求補(bǔ),注意把a(bǔ)的類型轉(zhuǎn)換為doublefigure(5);imshow(uint8(b4));%再把double類型轉(zhuǎn)換為unit8圖2-2cameraman圖像經(jīng)過(guò)不同的線性點(diǎn)運(yùn)算后的結(jié)果線性點(diǎn)運(yùn)算當(dāng)圖象成像時(shí)曝光不足或過(guò)度,或由于成像設(shè)備的非線性和圖像記錄設(shè)備動(dòng)態(tài)范圍太窄等因素,都會(huì)產(chǎn)生對(duì)比度不足的弊病,使圖像中的細(xì)節(jié)分辨不清.這時(shí)可通過(guò)點(diǎn)運(yùn)算將灰度范圍線性擴(kuò)展.設(shè)f(x,y)灰度范圍為[a,b],g(x,y)灰度范圍為[c,d].則線性點(diǎn)運(yùn)算公式為:線性點(diǎn)運(yùn)算公式(2)分段線性點(diǎn)運(yùn)算將感興趣的灰度范圍線性擴(kuò)展,相對(duì)抑制不感興趣的灰度區(qū)域。設(shè)f(x,y)灰度范圍為[0,Mf],g(x,y)灰度范圍為[0,Mg],分段線性點(diǎn)運(yùn)算如下圖所示:分段線性點(diǎn)運(yùn)算公式0f(x,y)g(x,y)abcdMfMg變換前變換后分段線性點(diǎn)運(yùn)算的應(yīng)用(3)非線性點(diǎn)運(yùn)算:2552550輸入輸出輸出灰度級(jí)與輸入灰度級(jí)呈非線性關(guān)系的點(diǎn)運(yùn)算。25512825521825512825532加亮、減暗圖像亮度調(diào)整加暗、減亮圖像對(duì)比度拉伸拉伸效果:圖像加亮、減暗非線性拉伸實(shí)例1非線性拉伸實(shí)例2非線性拉伸實(shí)例3非線性拉伸實(shí)例4非線性拉伸實(shí)例5非線性拉伸實(shí)例6非線性拉伸實(shí)例7直方圖修正分析1.點(diǎn)運(yùn)算對(duì)直方圖的影響下面通過(guò)一個(gè)示例來(lái)說(shuō)明點(diǎn)運(yùn)算對(duì)直方圖的影響。

【例2-3】cameraman圖像f(x)=1.25x+45的直方圖變化情況。clear;a=imread('cameraman.tif');Subplot(1,2,1);imhist(a);title('原始cameraman圖像的直方圖');b1=1.25*double(a)+45;Subplot(1,2,2);imhist(uint8(b1));title('變換后的直方圖');直方圖均衡化又稱為直方圖平坦化。直方圖均衡化的基本思想是將原始圖像的不均衡的直方圖變化為均勻分布的形式。即將輸入圖像轉(zhuǎn)換為在每一灰度級(jí)上都有相同的像素點(diǎn)數(shù)(即輸出的直方圖是平坦的,其分布為均勻分布)。直方圖均衡化的結(jié)果擴(kuò)展了像元取值的動(dòng)態(tài)范圍,從而達(dá)到增強(qiáng)圖像整體對(duì)比度的效果。直方圖均衡化參考以下示例。2.直方圖均衡化I=imread(‘lena.bmp');J=histeq(I);H=adapthisteq(I);subplot(1,3,1),imshow(I);xlabel('原始圖像');subplot(1,3,2),imshow(J);xlabel('histeq均衡化');subplot(1,3,3),imshow(H);xlabel('adapthisteq均衡化');3、點(diǎn)運(yùn)算的應(yīng)用(1)對(duì)比度增強(qiáng)

在一些數(shù)字圖像中,技術(shù)人員所關(guān)注的特征可能僅占據(jù)整個(gè)灰度級(jí)非常小的一個(gè)范圍。點(diǎn)運(yùn)算可以擴(kuò)展所關(guān)注部分的灰度信息的對(duì)比度,使之占據(jù)可顯示灰度級(jí)的更大部分。又稱為對(duì)比度拉伸。(2)光度學(xué)標(biāo)定

點(diǎn)運(yùn)算可消除圖像傳感器的非線性的影響。(3)顯示標(biāo)定

一些顯示設(shè)備不能保持?jǐn)?shù)字圖像上像素的灰度值和顯示屏幕上相應(yīng)點(diǎn)的亮度之間的線性關(guān)系。這一缺點(diǎn)可以通過(guò)點(diǎn)運(yùn)算予以克服,即在圖像顯示之前,先設(shè)計(jì)合理的點(diǎn)運(yùn)算關(guān)系,可將點(diǎn)運(yùn)算和顯示非線性組合起來(lái)互互相抵消,以保持在顯示圖像時(shí)的線性關(guān)系。

(4)輪廓線

點(diǎn)運(yùn)算可為圖像加上輪廓線。

二、代數(shù)運(yùn)算1、概念2、運(yùn)算類型及應(yīng)用代數(shù)運(yùn)算的意義在數(shù)字圖像處理技術(shù)中,代數(shù)運(yùn)算具有非常廣泛的應(yīng)用和重要的意義。圖像相加也可用于將一幅圖像的內(nèi)容疊加到另一幅圖像上,從而實(shí)現(xiàn)二次曝光(double-exposure)。圖像相減運(yùn)算可用于消除一幅圖像中所不需要的加性圖案,加性圖案可能是緩慢變化的背景陰影、周期性噪聲,或在圖像上每一像素點(diǎn)均已知的附加污染等。減法運(yùn)算還可用于檢測(cè)同一場(chǎng)景的兩幅圖像之間的變化。1、概念

代數(shù)運(yùn)算是指兩幅輸入圖像之間進(jìn)行點(diǎn)對(duì)點(diǎn)的加、減、乘、除運(yùn)算得到輸出圖像的過(guò)程。如果記輸入圖像為A(x,y)和B(x,y),輸出圖像為C(x,y),則有如下四種形式:

(1)C(x,y)=A(x,y)+B(x,y)(2)C(x,y)=A(x,y)-B(x,y)(3)C(x,y)=A(x,y)×B(x,y)(4)C(x,y)=A(x,y)/B(x,y)在數(shù)字圖像處理中,雖然乘、除運(yùn)算應(yīng)用得相對(duì)少一些,但它們也具有很重要的應(yīng)用。例如,在獲取數(shù)字化圖像過(guò)程中,圖像數(shù)字化設(shè)備對(duì)一幅圖像各點(diǎn)的敏感程度不可能完全相同,乘、除運(yùn)算可用于糾正這方面的不利影響。此外,乘法運(yùn)算在獲取圖像的局部圖案時(shí)發(fā)揮作用,用一幅掩膜圖像(maskimage)乘以某一圖像可遮住該圖像中的某些部分,使其僅保留圖像中感興趣的部分,而除法運(yùn)算還可以產(chǎn)生對(duì)顏色和多光譜圖像分析十分重要的比率圖像。2、運(yùn)算類型及應(yīng)用(1)加運(yùn)算(2)減運(yùn)算(3)乘運(yùn)算(4)除運(yùn)算(1)加運(yùn)算C(x,y)=A(x,y)+B(x,y)主要應(yīng)用舉例去除“疊加性”隨機(jī)噪音生成圖像疊加效果去除“疊加性”噪音對(duì)于原圖象f(x,y),有一個(gè)噪音圖像集

{gi(x,y)}i=1,2,...M其中:gi(x,y)=f(x,y)+h(x,y)IM個(gè)圖像的均值定義為:g(x,y)=1/M[g0(x,y)+g1(x,y)+…+gM(x,y)]當(dāng)噪音h(x,y)i為互不相關(guān),且均值為0時(shí),上述圖象均值將降低噪音的影響。去除“疊加性”噪音對(duì)于原圖象f(x,y),有一個(gè)噪音圖像集{gi(x,y)}i=1,2,...M其中:gi(x,y)=f(x,y)+ei(x,y)當(dāng):噪音ei(x,y)為互不相關(guān),且均值為0時(shí),上述圖象均值將降低噪音的影響。M個(gè)圖像的均值為:則是的無(wú)偏估計(jì)利用同一景物的多幅圖像取平均、消除噪聲。取M個(gè)圖像相加求平均得到1幅新圖像,一般選8幅取平均。當(dāng):噪音e(x,y)i為互不相關(guān),且均值為0時(shí),上述圖像均值將降低噪音的影響?!纠?.4】把一幅圖像加上高斯噪聲,再通過(guò)100次求平均的方法去除噪聲,其MATLAB程序如下:I=imread('eight.tif');%讀取一幅圖片J=imnoise(I,'gaussian',0,0.02);%向這幅圖片加入高斯噪聲subplot(1,2,1),imshow(I);%顯示圖片subplot(1,2,2),imshow(J);%顯示圖片K=zeros(242,308);%產(chǎn)生全零的矩陣,大小與圖片的一樣fori=1:100%循環(huán)100加入噪聲J=imnoise(I,'gaussian',0,0.02);J1=im2double(J);K=K+J1;endK=K/100;>>figure;imshow(K);未加噪聲的圖像加噪聲后的圖像求平均后的圖像相加M=1M=2M=4M=16Addition:averagingfornoisereduction生成圖象疊加效果在MATLAB中提供函數(shù)imadd實(shí)現(xiàn)圖像的加法運(yùn)算,其語(yǔ)法格式為:

z=imadd(A,B)

其中A為圖像,若B是一幅圖像,則z為兩個(gè)圖像的求和,此時(shí)要求B的大小必須和A相等;若B是一個(gè)標(biāo)量(雙精度),則z表示對(duì)圖像A整體加上某個(gè)值,即圖像的亮度調(diào)整。I=imread('rice.png');j=50;K=imadd(I,j);//等價(jià)于k=i+50;figure(1);imshow(K);imwrite(k,'f:\wym\addshu.bmp');I=imread('rice.png');J=imread('cameraman.gif');K=imadd(I,J);figure(1);imshow(K);imwrite(k,'f:\addimage.bmp');a=imread('leaf.bmp');a1=imnoise(a,'gaussian',0,0.006);%對(duì)原始圖像加高斯噪聲,

a2=imnoise(a,'gaussian',0,0.006);a3=imnoise(a,'gaussian',0,0.006);a4=imnoise(a,'gaussian',0,0.006);k=imlincomb(0.25,a1,0.25,a2,0.25,a3,0.25,a4);%線性組合subplot(131);imshow(a);subplot(132);imshow(a1);subplot(133);imshow(k,[]);imwrite(a4,'f:\wym\myleaf.bmp');imwrite(k,'f:\wym\myleaf1.bmp');(2)減法運(yùn)算圖像相減常用于檢測(cè)變化及運(yùn)動(dòng)的物體,圖像相減運(yùn)算又稱為圖像差分運(yùn)算。

C(x,y)=A(x,y)-B(x,y)

主要應(yīng)用消除背景影響差影法(檢測(cè)同一場(chǎng)景兩幅圖像之間的變化)減法運(yùn)算主要應(yīng)用舉例:差影法(檢測(cè)同一場(chǎng)景兩幅圖像之間的變化)混合圖像的分離將同一景物在不同時(shí)間拍攝的圖像或同一景物在不同波段的圖像相減,這就是圖像的減法運(yùn)算。實(shí)際中常稱為差影法。差值圖像提供了圖像間的差值信息,能用于指導(dǎo)動(dòng)態(tài)監(jiān)測(cè)、運(yùn)動(dòng)目標(biāo)的檢測(cè)和跟蹤、圖像背景的消除及目標(biāo)識(shí)別等。①消除背景影響即去除不需要的疊加性圖案設(shè):背景圖像b(x,y),前景背景混合圖像f(x,y) g(x,y)=f(x,y)–b(x,y)g(x,y)為去除了背景圖像。②差影法指把同一景物在不同時(shí)間拍攝的圖像或同一景物在不同波段的圖像相減;差值圖像提供了圖像間的差異信息,能用于指導(dǎo)動(dòng)態(tài)監(jiān)測(cè)、運(yùn)動(dòng)目標(biāo)檢測(cè)和跟蹤、圖像背景消除及目標(biāo)識(shí)別等。差影法在自動(dòng)現(xiàn)場(chǎng)監(jiān)測(cè)中的應(yīng)用在銀行金庫(kù)內(nèi),攝像頭每隔一固定時(shí)間拍攝一幅圖像,并與上一幅圖像做差影,如果圖像差別超過(guò)了預(yù)先設(shè)置的閾值,則表明可能有異常情況發(fā)生,應(yīng)自動(dòng)或以某種方式報(bào)警;用于遙感圖像的動(dòng)態(tài)監(jiān)測(cè),差值圖像可以發(fā)現(xiàn)森林火災(zāi)、洪水泛濫,監(jiān)測(cè)災(zāi)情變化等;也可用于監(jiān)測(cè)河口、海岸的泥沙淤積及監(jiān)視江河、湖泊、海岸等的污染;利用差值圖像還能鑒別出耕地及不同的作物覆蓋情況。差值法的應(yīng)用舉例(a)差影法可以用于混合圖像的分離-=(b)檢測(cè)同一場(chǎng)景兩幅圖像之間的變化=-T1(x,y)T2(x,y)g(x,y)設(shè):時(shí)刻1的圖像為T(mén)1(x,y),時(shí)刻2的圖像為T(mén)2(x,y)g(x,y)=T2(x,y)-T1(x,y)圖像相減——運(yùn)動(dòng)檢測(cè)③

求梯度幅度圖像的減法運(yùn)算也可應(yīng)用于求圖像梯度函數(shù)梯度定義形式:梯度幅度(模)梯度幅度的近似計(jì)算:梯度幅度的應(yīng)用梯度幅度圖像梯度幅度在邊緣處很高;在均勻的肌肉纖維的內(nèi)部,梯度幅度很低。在MATLAB中,圖像的減法用imsubtract和imabsdiff函數(shù)可以完成,其語(yǔ)法格式為:z=imsubtract(a,b);%差值結(jié)果小于0的賦值為0;a、b大小相等。z=imabsdiff(a,b)%差值結(jié)果取絕對(duì)值減法的MATLAB實(shí)現(xiàn)clear;a=imread('rice.png');%讀取圖像figure(1);imshow(a);%顯示原始圖像background=imopen(a,strel('disk',15));%在a上進(jìn)行形態(tài)學(xué)運(yùn)算;ap=imsubtract(a,background);%減法運(yùn)算函數(shù)figure(2);imshow(background);%圖像輸出背景figure(3);imshow(ap,[]);%減法運(yùn)算結(jié)果消除背景后圖像i=imread('rice.png');j=imread('cameraman.tif');k=imsubtract(i,j);l=imsubtract(i,83);figure;subplot(221);imshow(i);subplot(222);imshow(j);subplot(223);imshow(k,[]);subplot(224);imshow(l,[]);(3)乘法運(yùn)算乘法的定義C(x,y)=A(x,y)*B(x,y)

主要應(yīng)用舉例

圖象的局部顯示用二值蒙板圖象與原圖象做乘法圖像的局部顯示a=imread('hill.jpg');b=imread('bom.jpg');s=size(a);m=s(1);n=s(2);b1=imresize(b,[mn]);a=double(a);c=double(b1);d=a.*c/256;%MATLAB實(shí)現(xiàn)乘法運(yùn)算函數(shù)d=uint8(d);subplot(131);imshow(a);subplot(132);imshow(b);subplot(133);imshow(d);乘法的matlab實(shí)現(xiàn)i=imread('moon.tif');j=immultiply(i,i);k=imread('rice.png');l=immultiply(k,0.5);figure;subplot(221);imshow(i);subplot(222);imshow(j);subplot(223);imshow(k);subplot(224);imshow(l);主要應(yīng)用舉例常用于遙感圖像處理中

C(x,y)=A(x,y)/B(x,y)(4)除法運(yùn)算遙感圖像處理舉例 圖a、b分別是陸地衛(wèi)星的TM3、TM4波段,圖c是對(duì)兩個(gè)波段進(jìn)行比值處理(除法運(yùn)算)的結(jié)果。所采用的公式為式中,C為比例因子,用于增加比值圖像的對(duì)比度。 如圖,比值處理前,兩個(gè)波段的陰影(十字光標(biāo)附近)都非常嚴(yán)重,陰、陽(yáng)坡無(wú)法區(qū)分,當(dāng)然更無(wú)法識(shí)別不同的地物類型。比值處理后,圖像的陰影部分基本消失,可以很明顯的區(qū)分不同坡向上的地物類型。i=imread('rice.png');j=imread('cameraman.tif');lp=imdivide(i,j);k=imdivide(i,2);figure;subplot(221);imshow(i);subplot(222);imshow(j,[]);subplot(223);imshow(lp,[]);subplot(224);imshow(k);除法的matlab實(shí)現(xiàn)邏輯運(yùn)算(LogicalOperation)圖3.7圖像的邏輯運(yùn)算(a)A圖(b)B圖

(c)A、B相與結(jié)果圖(d)A、B相或結(jié)果圖(e)A取反結(jié)果圖“與”、“或”,“非”邏輯運(yùn)算邏輯運(yùn)算主要以像素對(duì)像素為基礎(chǔ)在兩幅或多幅圖像間進(jìn)行。求反運(yùn)算——獲得陰圖像求反運(yùn)算——求子圖像的補(bǔ)圖像邏輯運(yùn)算或主要應(yīng)用:合并子圖像邏輯運(yùn)算(LogicalOperation)“與”、“或”邏輯運(yùn)算可以從一幅圖像中提取子圖像

2.3圖像的幾何變換2.3.1幾何變換基礎(chǔ)2.3.2圖像比例縮放2.3.3圖像平移2.3.4圖像鏡像2.3.5圖像旋轉(zhuǎn)2.3.6圖像復(fù)合變換2.3.7透視變換2.3.8應(yīng)用實(shí)例2.3.1幾何變換基礎(chǔ)2.3.1.1概述圖像的幾何變換,是指使用戶獲得或設(shè)計(jì)的原始圖像。按照需要產(chǎn)生大小、形狀和位置的變化。從圖像類型來(lái)分,圖像的幾何變換有二維平面圖像的幾何變換和三維圖像的幾何變換以及由三維向二維平面投影變換等。從變換的性質(zhì)分,圖像的幾何變換有平移、比例縮放、旋轉(zhuǎn)、反射和錯(cuò)切等基本變換,透視變換等復(fù)合變換,以及插值運(yùn)算等。

數(shù)字圖像是把連續(xù)圖像在坐標(biāo)空間和性質(zhì)空間離散化了的圖像。例如,一幅二維數(shù)字圖像就是把一幅連續(xù)的二維(2D)。圖像在坐標(biāo)空間XOY和性質(zhì)空間F都離散化了的圖像,它可以用一組二維(2D)數(shù)組f(x,y)來(lái)表示,其中x和y表示2D空間XOY中一個(gè)坐標(biāo)點(diǎn)的位置,f代表圖像在點(diǎn)(x,y)的某種性質(zhì)F的數(shù)值,如果所處理的是一幅灰度圖,這時(shí)f表示灰度值。而且此時(shí)f、x、y都在整數(shù)集合中取值。因此,除了插值運(yùn)算外,常見(jiàn)的圖像幾何變換可以通過(guò)與之對(duì)應(yīng)的矩陣線性變換來(lái)實(shí)現(xiàn)。

對(duì)于2D圖像幾何變換及變換中心在坐標(biāo)原點(diǎn)的比例縮放、反射、錯(cuò)切和旋轉(zhuǎn)等各種變換,都可以用2×2的矩陣表示和實(shí)現(xiàn)。但是一個(gè)2×2變換矩陣 卻不能實(shí)現(xiàn)圖像的平移以及繞任意點(diǎn)的比例縮放、反射、錯(cuò)切和旋轉(zhuǎn)等各種變換。因此,為了能夠用統(tǒng)一的矩陣線性變換形式,表示和實(shí)現(xiàn)這些常見(jiàn)的圖像幾何變換,就需要引入一種新的坐標(biāo),即齊次坐標(biāo)。利用齊次坐標(biāo)來(lái)變換處理,才能實(shí)現(xiàn)上述各種2D圖像的幾何變換。2.3.1.2齊次坐標(biāo)現(xiàn)設(shè)點(diǎn)P0(x0,y0)進(jìn)行平移后,移到P(x,y),其中x方向的平移量為Δx,y方向的平移量為Δy。那么,點(diǎn)P(x,y)的坐標(biāo)為如圖所示。這個(gè)變換用矩陣的形式可以表示為圖2.3-1點(diǎn)的平移而平面上點(diǎn)的變換矩陣 中沒(méi)有引入平移常量,無(wú)論a、b、c、d取什么值,都不能實(shí)現(xiàn)上述的平移變換。因此,需要使用2×3階變換矩陣,取其形式為此矩陣的第一、二列構(gòu)成單位矩陣,第三列元素為平移常量。由上述可知,對(duì)2D圖像進(jìn)行變換,只需要將圖像的點(diǎn)集矩陣乘以變換矩陣即可,2D圖像對(duì)應(yīng)的點(diǎn)集矩陣是2×n階的,而上式擴(kuò)展后的變換矩陣是2×3階的矩陣,這不符合矩陣相乘時(shí)要求前者的列數(shù)與后者的行數(shù)相等的規(guī)則。

所以需要在點(diǎn)的坐標(biāo)列矩陣[xy]T中引入第三個(gè)元素,增加一個(gè)附加坐標(biāo),擴(kuò)展為3×1的列矩陣[xy1]T,這樣用三維空間點(diǎn)(x,y,1)表示二維空間點(diǎn)(x,y),即采用一種特殊的坐標(biāo),可以實(shí)現(xiàn)平移變換,變換結(jié)果為式 符合上述平移后的坐標(biāo)位置。通常將2×3階矩陣擴(kuò)充為3×3階矩陣,以拓寬功能。由此可得平移變換矩陣為

下面再驗(yàn)證一下點(diǎn)P(x,y)按照3×3的變換矩陣T平移變換的結(jié)果

從上式可以看出,引入附加坐標(biāo)后,擴(kuò)充了矩陣的第3行,并沒(méi)有使變換結(jié)果受到影響。這種用n+1維向量表示n維向量的方法稱為齊次坐標(biāo)表示法。

因此,2D圖像中的點(diǎn)坐標(biāo)(x,y)通常表示成齊次坐標(biāo)(Hx,Hy,H),其中H表示非零的任意實(shí)數(shù),當(dāng)H=1時(shí),則(x,y,1)就稱為點(diǎn)(x,y)的規(guī)范化齊次坐標(biāo)。顯然規(guī)范化齊次坐標(biāo)的前兩個(gè)數(shù)是相應(yīng)二維點(diǎn)的坐標(biāo),沒(méi)有變化,僅在原坐標(biāo)中增加了H=1的附加坐標(biāo)。由點(diǎn)的齊次坐標(biāo)(Hx,Hy,H)求點(diǎn)的規(guī)范化齊次坐標(biāo)(x,y,1),可按如下公式進(jìn)行:

齊次坐標(biāo)的幾何意義相當(dāng)于點(diǎn)(x,y)落在3D空間H=1的平面上,如圖2.3-2所示。如果將XOY平面內(nèi)的三角形abc的各頂點(diǎn)表示成齊次坐標(biāo)(xi,yi,1)(i=1,2,3)的形式,就變成H=1平面內(nèi)的三角形a1b1c1的各頂點(diǎn)。圖2.3-2齊次坐標(biāo)的幾何意義

齊次坐標(biāo)在2D圖像幾何變換中的另一個(gè)應(yīng)用是:如某點(diǎn)S(60000,40000)在16位計(jì)算機(jī)上表示則大于32767的最大坐標(biāo)值,需要進(jìn)行復(fù)雜的操作。但如果把S的坐標(biāo)形式變成(Hx,Hy,H)形式的齊次坐標(biāo),則情況就不同了。在齊次坐標(biāo)系中,設(shè)H=1/2,則(60000,40000)的齊次坐標(biāo)為(1/2x,1/2y,1/2),那么所要表示的點(diǎn)變?yōu)?30000,20000,1/2),此點(diǎn)顯然在16位計(jì)算機(jī)上二進(jìn)制數(shù)所能表示的范圍之內(nèi)。因此,采用齊次坐標(biāo),并將變換矩陣改成3×3階的形式后,便可實(shí)現(xiàn)所有2D圖像幾何變換的基本變換。2.3.1.3二維圖像幾何變換的矩陣?yán)谬R次坐標(biāo)及改成3×3階形式的變換矩陣,實(shí)現(xiàn)2D圖像幾何變換的基本變換的一般過(guò)程是:將2×n階的二維點(diǎn)集矩陣 表示成齊次坐標(biāo) 的形式,然后乘以相應(yīng)的變換矩陣即可完成,即變換后的點(diǎn)集矩陣=變換矩陣T×變換前的點(diǎn)集矩陣(圖像上各點(diǎn)的新齊次坐標(biāo))(圖像上各點(diǎn)的原齊次坐標(biāo))設(shè)變換矩陣T為則上述變換可以用公式表示為圖像上各點(diǎn)的新齊次坐標(biāo)規(guī)范化后的點(diǎn)集矩陣為

引入齊次坐標(biāo)后,表示2D圖像幾何變換的3×3矩陣的功能就完善了,可以用它完成2D圖像的各種幾何變換。下面討論3×3階變換矩陣中各元素在變換中的功能。幾何變換的3×3矩陣的一般形式為3×3的階矩陣T可以分成四個(gè)子矩陣。其中,這一子矩陣可使圖像實(shí)現(xiàn)恒等、比例、反射(或鏡像)、錯(cuò)切和旋轉(zhuǎn)變換。[p

q]T這一行矩陣可以使圖像實(shí)現(xiàn)平移變換。[lm]這一列矩陣可以使圖像實(shí)現(xiàn)透視變換,但當(dāng)p=0,q=0時(shí)它無(wú)透視作用。[s]這一元素可以使圖像實(shí)現(xiàn)全比例變換。例如,將圖像進(jìn)行全比例變換,即將齊次坐標(biāo) 規(guī)范化后, 。由此可見(jiàn),當(dāng)s>1時(shí),圖像按比例縮小;當(dāng)0<s<1時(shí),整個(gè)圖像按比例放大;當(dāng)s=1時(shí),圖像大小不變。2.3.2圖像平移2.3.2.1圖像平移變換圖2-3-12圖像平移

設(shè)點(diǎn)P0(x0,y0)進(jìn)行平移后,移到P(x,y),其中x方向的平移量為Δx,y方向的平移量為Δy。那么,點(diǎn)P(x,y)的坐標(biāo)為

利用齊次坐標(biāo),變換前后圖像上的點(diǎn)P0(x0,y0)和P(x,y)之間的關(guān)系可以用如下的矩陣變換表示為(2-3-2)對(duì)變換矩陣求逆,可以得到式(2-3-2)的逆變換即

這樣,平移后的圖像上的每一點(diǎn)都可以在原圖像中找到對(duì)應(yīng)的點(diǎn)。例如,對(duì)于新圖中的(0,0)像素,代入上面的方程組,可以求出對(duì)應(yīng)原圖中的像素(-Δx,-Δy)。如果Δx或Δy大于0,則點(diǎn)(-Δx,-Δy)不在原圖像中。對(duì)于不在原圖像中的點(diǎn),可以直接將它的像素值統(tǒng)一設(shè)置為0或者255(對(duì)于灰度圖就是黑色或白色)。同樣,若有像素點(diǎn)不在原圖像中,也就說(shuō)明原圖像中有點(diǎn)被移出顯示區(qū)域。如果不想丟失被移出的部分圖像,可以將新生成的圖像寬度擴(kuò)大|Δx|,高度擴(kuò)大|Δy|。圖2-3-13平移前的圖像圖2-3-14平移后的圖像圖2-3-15平移擴(kuò)大后的圖像1.平移的變換公式(x0,y0)是原圖像上的點(diǎn),圖像水平平移量為a,垂直平移量為b,如圖所示。平移后的新坐標(biāo)點(diǎn)為:x1=x0+a;y1=y0+b;0yxabx0y0x1y1平移J(x1,y1)=I(X0,Y0)J(i,j)=I(i-a,j-b)

且0<X0<M,0<Y0<N)0<i-a<M,0<j-b<N2.程序?qū)崿F(xiàn):2.3.43圖像鏡像2.3.3.1圖像鏡像變換圖像的鏡像變換不改變圖像的形狀。圖像的鏡像(Mirror)變換分為兩種:一種是水平鏡像,另外一種是垂直鏡像。圖像的水平鏡像操作是將圖像左半部分和右半部分以圖像垂直中軸線為中心進(jìn)行鏡像對(duì)換;圖像的垂直鏡像操作是將圖像上半部分和下半部分以圖像水平中軸線為中心進(jìn)行鏡像對(duì)換,如圖2-3-16所示。圖2-3-16圖像的鏡像

圖像的鏡像變換也可以用矩陣變換表示。設(shè)點(diǎn)P0(x0,y0)進(jìn)行鏡像后的對(duì)應(yīng)點(diǎn)為P(x,y),圖像高度為fHeight,寬度為fWidth,原圖像中P0(x0,y0)經(jīng)過(guò)水平鏡像后坐標(biāo)將變?yōu)椋╢Width-x0,y0),其矩陣表達(dá)式為(2.3-3)逆運(yùn)算矩陣表達(dá)式為即

同樣,P0(x0,y0)經(jīng)過(guò)垂直鏡像后坐標(biāo)將變?yōu)?x0,fHeight-y0),其矩陣表表達(dá)式為(2.3-4)

逆運(yùn)算矩陣表達(dá)式為即圖像鏡像水平鏡像:圖像的左半部分和右半部分以圖像豎直中軸線為中心軸進(jìn)行對(duì)換。垂直鏡像:圖像的上半部分和下半部分以圖像水平中軸線為中心軸進(jìn)行對(duì)換。1.水平鏡像的變換公式(x0,y0)是原圖像上的點(diǎn),中心軸如圖所示,水平鏡像對(duì)應(yīng)的新坐標(biāo)點(diǎn)為:x1=M-x0;y1=y0;0yxx0y0x1y1水平鏡像MJ(X1,Y1)=I(X0,Y0)J(i,j)=I(M-i,j)2.垂直鏡像的變換公式(x0,y0)是原圖像上的點(diǎn),中心軸如圖所示,垂直鏡像對(duì)應(yīng)的新坐標(biāo)點(diǎn)為:x1=x0;y1=N-y0;0yxx0y0x1y1垂直鏡像NJ(X0,Y1)=I(X0,Y0)J(i,j)=I(i,N-j)3.程序?qū)崿F(xiàn):圖像二維仿射變換MATLAB使用imtransform函數(shù)完成圖像空間變換。格式imtransform(A,T)其中參數(shù)A是要變換的圖像,T是由makeform函數(shù)產(chǎn)生的變換結(jié)構(gòu).在maketform(‘P’,......)函數(shù)中,參數(shù)P可以以下形式:affine:仿射變換形式。projective:投影變換形式;4.MATLAB中實(shí)現(xiàn)鏡像的函數(shù)水平鏡像和垂直鏡像的變換矩陣:水平鏡像的matlab實(shí)現(xiàn)i=imread(‘cameraman.tif');subplot(1,2,1);imshow(i);[x,y]=size(i);p=1:x;q=1:y;j(p,y+1-q)=i(p,q);subplot(1,2,2);imshow(j);圖像轉(zhuǎn)置1、圖像轉(zhuǎn)置的公式0yxx0y0y1x1轉(zhuǎn)置圖像轉(zhuǎn)置即為行列互換,(x0,y0)是原圖像上的點(diǎn),轉(zhuǎn)置后對(duì)應(yīng)的新坐標(biāo)點(diǎn)為:x1=y0;y1=x0;注意:圖像尺寸有可能改變。2.程序?qū)崿F(xiàn):3.MATLAB中實(shí)現(xiàn)圖像轉(zhuǎn)置的函數(shù):圖像轉(zhuǎn)置的變換矩陣:2.3.4圖像比例縮放2.3.4.1圖像比例縮放變換圖像比例縮放是指將給定的圖像在x軸方向按比例縮放fx倍,在y軸方向按比例縮放fy倍,從而獲得一幅新的圖像。如果fx=fy,即在x軸方向和y軸方向縮放的比率相同,稱這樣的比例縮放為圖像的全比例縮放。如果fx≠fy,圖像的比例縮放會(huì)改變?cè)紙D像的像素間的相對(duì)位置,產(chǎn)生幾何畸變。設(shè)原圖像中的點(diǎn)P0(x0,y0)比例縮放后,在新圖像中的對(duì)應(yīng)點(diǎn)為P(x,y),則P0(x0,y0)和P(x,y)之間的對(duì)應(yīng)關(guān)系如圖2-3-3所示。圖2-3比例縮放圖像縮放圖像縮放:指圖像大小按照指定的比率放大或者縮小。圖像尺寸會(huì)發(fā)生變化。1、圖像縮放的公式0yxx0y0x1y1縮放(x0,y0)是原圖像上的點(diǎn),縮放后對(duì)應(yīng)的新坐標(biāo)點(diǎn)為:x1=a*x0;y1=b*y0;注意:圖像尺寸有可能改變。

比例縮放前后兩點(diǎn)P0(x0,y0)、P(x,y)之間的關(guān)系用矩陣形式可以表示為(3-1)逆運(yùn)算為

比例縮放所產(chǎn)生的圖像中的像素可能在原圖像中找不到相應(yīng)的像素點(diǎn),這樣就必須進(jìn)行插值處理。0.5

放大2倍1121.53242.5536(1)等比例縮小例如:在圖像的縮放中,將一幅6×6的圖像按比例縮小,fx=fy=1/2,圖像的長(zhǎng)和寬均縮小到原來(lái)的一半,成為一幅3×3的圖像。原圖像的象素從(0,0)到(5,5),新圖像的象素從(0,0)到(2,2)。如下圖:6×6的原圖f新圖中的坐標(biāo)值利用縮放公式計(jì)算得到X0=0/0.5=0y0=0X1=1/0.5=2y1=2X2=2/0.5=4y2=4g(0,0)=f(0,0),g(0,1)=f(0,2),g(0,2)=f(0,4),g(1,0)=f(2,0),g(1,1)=f(2,2),g(1,2)=f(2,4)g(2,0)=f(4,0),g(2,1)=f(4,2),g(2,2)=f4,4)(0,0)(0,1)(0,2)(1,0)(1,1)(1,2)(2,0)(2,1)(2,2)現(xiàn)在坐標(biāo)X現(xiàn)=X原/f(x)=1x/2原原來(lái)坐標(biāo)(0,0)(0,2)(0,4)(2,0)(2,2)(2,4)(4,0)(4,2)(4,4)

如果圖像按任意等比例縮小,則需要計(jì)算選擇的行和列。如果M×N大小的原圖像F(x,y)縮小為

kM×kN大?。╧<1)的新圖像G(x,y)時(shí),則G(x,y)=F(int(c×x),int(c×y))其中,c=1/k。假設(shè)K=0.5,C=2圖3-5圖像按任意比例縮小

當(dāng)fx≠fy(fx,fy>0)時(shí),圖像不按比例縮小,這種操作因?yàn)樵趚方向和y方向的縮小比例不同,一定會(huì)帶來(lái)圖像的幾何畸變。圖像不按比例縮小的方法是:如果M×N大小的舊圖像F(x,y)縮小為k1M×k2N(k1<1,k2<1)大小的新圖像G(x,y)時(shí),則

G(x,y)=F(int(c1×x),int(c2×y))其中

由此公式可以構(gòu)造出新圖像。

圖像在縮小操作中,是在現(xiàn)有的信息里如何挑選所需要的有用信息。(3-2)(1)基于等間隔采樣的圖像縮小方法(2)基于局部均值的圖像縮小方法其次討論圖像的比例放大:在圖像的放大操作中,則需要對(duì)尺寸放大后所多出來(lái)的空格填入適當(dāng)?shù)南袼刂担@是信息的估計(jì)問(wèn)題,所以較圖像的縮小要難一些。圖3-6放大前的圖像圖3-7按最近鄰域法放大兩倍的圖像

一般地,按比例將原圖像放大k倍時(shí),如果按照最近鄰域法則需要將一個(gè)像素值添在新圖像的k×k的子塊中,如圖3-9所示。顯然,如果放大倍數(shù)太大,按照這種方法處理會(huì)出現(xiàn)馬賽克效應(yīng)。圖3-9按最近鄰域法放大五倍的圖像當(dāng)fx≠fy(fx,fy>0)時(shí)圖像在x方向和y方向不按比例放大,此時(shí),這種操作由于x方向和y方向的放大倍數(shù)不同,一定帶來(lái)圖像的幾何畸變。放大的方法是將原圖像的一個(gè)像素添到新圖像的一個(gè)k1×k2的子塊中去。線性插值法(提高圖像質(zhì)量)一種有效的灰度級(jí)插值處理方法是像素填充(pixelfilling)或稱為向后映射算法。輸出像素一次一個(gè)地映射回到原始(輸入)圖像中,以便確定其灰度級(jí)。

在像素填充法中,變換后(輸出)圖像的像素通常被映射到原始(輸入)圖像中的非整數(shù)位置,即位于四個(gè)輸入像素之間。因此,為了決定與該位置相對(duì)應(yīng)的灰度值,必須進(jìn)行插值運(yùn)算。如果一個(gè)輸出像素被映射到四個(gè)輸入像素之間,則其灰度值由灰度級(jí)插值決定.最簡(jiǎn)單的插值方法是零階插值或稱為最近鄰插值,也叫最近鄰域法。當(dāng)fx=fy=2時(shí),圖像被按全比例放大2倍,放大后圖像中的(0,0)像素對(duì)應(yīng)于原圖中的(0,0)像素;(0,1)像素對(duì)應(yīng)于原圖中的(0,0.5)像素,該像素不存在,可以近似為(0,0)也可以近似(0,1);

(0,2)像素對(duì)應(yīng)于原圖像中的(0,1)像素;(0,3)像素對(duì)應(yīng)于原圖像中的(0,1.5)像素;該像素不存在(1,0)像素對(duì)應(yīng)于原圖中的(0.5,0),它的像素值近似于(0,0)或(1,0)像素;依此類推

(2,0)像素對(duì)應(yīng)于原圖中的(1,0)像素,依此類推。最近鄰域法(2)線形插值線形插值是使用原圖中兩個(gè)值來(lái)構(gòu)造所求坐標(biāo)處的值。例如:如圖所示,如果已經(jīng)知道了兩點(diǎn)x0,x2處的函數(shù)值f(x0),f(x2),現(xiàn)在要求x1處的函數(shù)值f(x1)。我們假設(shè)函數(shù)是線性的,利用幾何知識(shí)可以知道:

雙線性插值在圖象處理中需要將線形插值擴(kuò)展到二維的情況,即采用雙線形插值(BilinearIntrepolation)例如:已知四點(diǎn)f(x0,y0),f(x0,y2),f(x2,y0),f(x2,y2)的灰度,要求g(x1,y1)點(diǎn)的灰度,可以先在水平方向上由f(x0,y0),f(x2,y2)線形插值求出g(x0,y1),f(x2,y0),f(x2,y2)線形插值求出g(x2,y1),然后在垂直方向上由g(x0,y1),g(x2,y1)線形插值求出g(x1,y1)

雙線性插值可以通過(guò)三次運(yùn)算的到。處理效果比較滿意。這種處理具有低通濾波性質(zhì),使高頻分量受到損失,圖像輪廓模糊。另外,圖像處理中還使用雙曲線插值,及三次內(nèi)插法解決圖像縮放及圖像旋轉(zhuǎn)后的灰度填充。圖像放大縮小的matlab實(shí)現(xiàn)I=imread('lena.jpg');%I為原始圖像figure;subplot(131);imshow(I);%顯示原始圖像I=double(I);I_en=imresize(I,4,'nearest');%最近鄰法標(biāo)志函數(shù)nearest擴(kuò)大4倍subplot(132);imshow(uint8(I_en));%顯示擴(kuò)大4倍后的圖像I_re=imresize(I,0.5,'nearest');%縮小兩倍subplot(133);imshow(uint8(I_re));%顯示縮小2倍后的圖像2.程序?qū)崿F(xiàn):2.3.5圖像旋轉(zhuǎn)2.3.5.1圖像旋轉(zhuǎn)變換本節(jié)介紹一種相對(duì)復(fù)雜的幾何變換——圖像的旋轉(zhuǎn)。一般圖像的旋轉(zhuǎn)是以圖像的中心為原點(diǎn),將圖像上的所有像素都旋轉(zhuǎn)一個(gè)相同的角度。圖像的旋轉(zhuǎn)變換是圖像的位置變換,但旋轉(zhuǎn)后,圖像的大小一般會(huì)改變。和圖像平移一樣,在圖像旋轉(zhuǎn)變換中既可以把轉(zhuǎn)出顯示區(qū)域的圖像截去,也可以擴(kuò)大圖像范圍以顯示所有的圖像。如圖2.3-20、圖2.3-21所示。圖2.3-20旋轉(zhuǎn)前的圖像圖2.3-21旋轉(zhuǎn)θ后的圖像(擴(kuò)大圖像、轉(zhuǎn)出部分被截)

同樣,圖像的旋轉(zhuǎn)變換也可以用矩陣變換表示。設(shè)點(diǎn)P0(x0,y0)旋轉(zhuǎn)θ角后的對(duì)應(yīng)點(diǎn)為P(x,y),如圖2.3-22所示。那么,旋轉(zhuǎn)前后點(diǎn)P0(x0,y0)、P(x,y)的坐標(biāo)分別是:圖2.3-22圖像旋轉(zhuǎn)θ角寫(xiě)成矩陣表達(dá)式為(2.3-5)其逆運(yùn)算為

利用公式(2.3-5)可以確定旋轉(zhuǎn)后圖像上的像素。例如,當(dāng)θ=30°時(shí),公式(2.3-5)為而且,此時(shí)xmin=0.866-0.5×3=-0.634;xmax=0.866×3-0.5=2.098ymin=0.866+0.5=1.366;ymax=0.866×3+0.5×3=4.098圖2.3-23圖像旋轉(zhuǎn)θ角

利用公式(2.3-5)進(jìn)行圖像旋轉(zhuǎn)時(shí)需要注意如下兩點(diǎn):(1)圖像旋轉(zhuǎn)之前,為了避免信息的丟失,一定要有坐標(biāo)平移,具體的做法有如圖2.3-24所示的兩種方法。圖2.3-24圖像旋轉(zhuǎn)之前進(jìn)行的平移

(2)圖像旋轉(zhuǎn)之后,會(huì)出現(xiàn)許多空洞點(diǎn),如圖2.3-23所示。對(duì)這些空洞點(diǎn)必須進(jìn)行填充處理,否則畫(huà)面效果不好,一般也稱這種操作為插值處理。最簡(jiǎn)單的方法是行插值方法或列插值方法:①找出當(dāng)前行的最小和最大的非白點(diǎn)的坐標(biāo),記作:(i,k1)、(i,k2)。②在(k1,k2)范圍內(nèi)進(jìn)行插值,插值的方法是:空點(diǎn)的像素值等于前一點(diǎn)的像素值。③同樣的操作重復(fù)到所有行。經(jīng)過(guò)如上的插值處理之后,圖像效果就變得自然。如圖2.3-25所示。列插值方法與此類同,請(qǐng)讀者自己給出。圖2.3-25圖2.3-23中的圖像處理后的效果sin(b)=x0/Lcos(b)=y0/Lsin(a+b)=x1/L=sin(a)cos(b)+cos(a)sin(b)cos(a+b)=y1/L=cos(a)cos(b)-sin(a)sin(b)旋轉(zhuǎn)后對(duì)應(yīng)的新坐標(biāo)點(diǎn)為:x1=y0sin(a)+x0cos(a);

y1=y0cos(a)-x0sin(a);0yxx0y0x1y1旋轉(zhuǎn)aLbLy0=x1sin(a)+y1cos(a)x0=x1cos(a)-y1sin(a)J(i,j)=I(i*sin(a)+j*cos(a),i*cos(a)-j*sin(a))2.程序?qū)崿F(xiàn):3、圖像以圖像中心為中心點(diǎn)的旋轉(zhuǎn)公式(x0,y0)是原圖像上的點(diǎn),L為(x0,y0)到原點(diǎn)的距離。有:sin(b)=(x0-M/2)/Lcos(b)=(y0-N/2)/Lsin(a+b)=(x1-M/2)/L=sin(a)cos(b)+cos(a)sin(b)cos(a+b)=(y1-N/2)/L=cos(a)cos(b)-sin(a)sin(b)旋轉(zhuǎn)后對(duì)應(yīng)的新坐標(biāo)點(diǎn)為:x1=(y0-N/2)sin(a)+(x0-M/2)cos(a)+M/2;y1=(y0-N/2)cos(a)-(x0-M/2)sin(a)+N/2;yxx0y0x1y1旋轉(zhuǎn)aLbLM/2,N/24.程序?qū)崿F(xiàn):5.MATLAB中實(shí)現(xiàn)圖像旋轉(zhuǎn)的函數(shù):

圖2.3-26旋轉(zhuǎn)前的圖像圖2.3-27旋轉(zhuǎn)15°并進(jìn)行插值處理的圖像圖2.3-28被放大的旋轉(zhuǎn)前圖像2.3-29旋轉(zhuǎn)300并進(jìn)行插值處理的放大圖像2.3.6圖像復(fù)合變換2.3.3.3.1圖像復(fù)合變換圖像的復(fù)合變換是指對(duì)給定的圖像連續(xù)施行若干次如前所述的平移、鏡像、比例、旋轉(zhuǎn)等基本變換后所完成的變換,圖像的復(fù)合變換又叫級(jí)聯(lián)變換。利用齊次坐標(biāo),對(duì)給定的圖像依次按一定順序連續(xù)施行若干次基本變換,其變換的矩陣仍然可以用3×3階的矩陣表示,而且從數(shù)學(xué)上可以證明,復(fù)合變換的矩陣等于基本變換的矩陣按順序依次相乘得到的組合矩陣。設(shè)對(duì)給定的圖像依次進(jìn)行了基本變換F1,F(xiàn)2,…,F(xiàn)N,它們的變換矩陣分別為T(mén)1,T2,…,TN,按照公式(2.3-1)~(2.3-6)的表示形式,圖像復(fù)合變換的矩陣T可以表示為:T=TNTN-1…T1。

1.復(fù)合平移設(shè)某個(gè)圖像先平移到新的位置P1(x1,y1)后,再將圖像平移到P2(x2,y2)的位置,則復(fù)合平移矩陣為

由此可見(jiàn),盡管一些順序的平移,用到矩陣的乘法,但最后合成的平移矩陣,只需對(duì)平移常量作加法運(yùn)算。(2.3-7)

2.復(fù)合比例同樣,對(duì)某個(gè)圖像連續(xù)進(jìn)行比例變換,最后合成的復(fù)合比例矩陣,只要對(duì)比例常量作乘法運(yùn)算即可。復(fù)合比例矩陣如下:(2.3-8)

3.復(fù)合旋轉(zhuǎn)類似地,對(duì)某個(gè)圖像連續(xù)進(jìn)行旋轉(zhuǎn)變換,最后合成的旋轉(zhuǎn)變換矩陣等于兩次旋轉(zhuǎn)角度的和,復(fù)合旋轉(zhuǎn)變換矩陣如下式所示:(2.3-9)

上述均為相對(duì)原點(diǎn)(圖像中央)作比例、旋轉(zhuǎn)等變換,如果要相對(duì)某一個(gè)參考點(diǎn)作變換,則要使用含有不同種基本變換的圖像復(fù)合變換。不同的復(fù)合變換,其變換過(guò)程不同,但是無(wú)論它的變換過(guò)程多么復(fù)雜,都可以分解成一系列基本變換。相應(yīng)地,使用齊次坐標(biāo)后,圖像復(fù)合變換的矩陣由一系列圖像基本幾何變換矩陣依次相乘而得到。下面通過(guò)一個(gè)例子討論含有不同種基本變換的圖像復(fù)合變換。

從2.3.2和2.3.5節(jié)的討論中可以看出,在進(jìn)行圖像的比例縮放、圖像的旋轉(zhuǎn)變換時(shí),整個(gè)變換過(guò)程由兩部分組成,即需要兩個(gè)獨(dú)立的算法。首先,需要一個(gè)算法來(lái)完成幾何變換本身,用它描述每個(gè)像素如何從其初始位置移動(dòng)到終止位置;同時(shí),還需要一個(gè)用于灰度級(jí)插值的算法。這是因?yàn)椋谝话闱闆r下,原始(輸入)圖像的位置坐標(biāo)(x,y)為整數(shù),而變換后(輸出)圖像的位置坐標(biāo)為非整數(shù),即產(chǎn)生“空穴”,反過(guò)來(lái)也是如此。因此,一般地,在進(jìn)行圖像的幾何變換時(shí),除了要進(jìn)行其本身的幾何變換外,還要進(jìn)行灰度級(jí)插值處理。

灰度級(jí)插值處理可采用如下兩種方法。第一,可以把幾何變換想像成將輸入圖像的灰度一個(gè)一個(gè)像素地轉(zhuǎn)移到輸出圖像中。如果一個(gè)輸入像素被映射到四個(gè)輸出像素之間的位置,則其灰度值就按插值算法在四個(gè)輸出像素之間進(jìn)行分配。把這種灰度級(jí)插值處理稱為像素移交(pixelcarryover)或稱為向前映射法,如圖2.3-30所示。另一種更有效的灰度級(jí)插值處理方法是像素填充(pixelfilling)或稱為向后映射算法。在這種算法中,輸出像素一次一個(gè)地映射回到原始(輸入)圖像中,以便確定其灰度級(jí)。如果一個(gè)輸出像素被映射到四個(gè)輸出像素之間,則其灰度值由灰度級(jí)插值決定,如圖2.3-30所示。向后空間變換是向前變換的逆變換。圖2.3-30灰度級(jí)插值處理(像素變換)

在像素填充法中,變換后(輸出)圖像的像素通常被映射到原始(輸入)圖像中的非整數(shù)位置,即位于四個(gè)輸入像素之間。因此,為了決定與該位置相對(duì)應(yīng)的灰度值,必須進(jìn)行插值運(yùn)算。最簡(jiǎn)單的插值方法是零階插值或稱為最近鄰插值,也叫最近鄰域法,參見(jiàn)本書(shū)2.3.2節(jié)。一階插值或稱雙線性插值法和零階插值法相比可產(chǎn)生更令人滿意的效果,只是程序稍復(fù)雜一些,運(yùn)行時(shí)間稍長(zhǎng)一些。它的原理如圖2.3-10和圖2.3-31所示,插值計(jì)算公式參見(jiàn)2.3.2.1中的公式(2.3-2)。由于篇幅所限,雙線性插值公式的推導(dǎo)在此從略,有興趣的讀者請(qǐng)參考書(shū)后的參考文獻(xiàn)。圖2.3-31雙線性插值

在這里還要說(shuō)明一點(diǎn),為了提高雙線性插值的速度,雙線性插值也可以分解為三個(gè)線性插值來(lái)實(shí)現(xiàn),公式如下:f(x,0)=f(0,0)+x[f(1,0)-f(0,0)]

f(x,1)=f(0,1)+x[f(1,1)-f(0,1)] (2.3-10)

f(x,y)=f(x,0)+y[f(x,1)-f(x,0)]

因?yàn)楣?2.3-2)需要用到四次乘法、八次加(或減)法運(yùn)算,而公式(2.3-10)表示的第二種方法只需要三次乘法和六次加(或減)法,所以幾何變換程序一般選擇后者。從圖2.3-31也可以看出雙線性插值與最近鄰插值的區(qū)別。

在幾何運(yùn)算中,雙線性灰度插值的平滑作用可能會(huì)使圖像的細(xì)節(jié)產(chǎn)生退化,尤其是在進(jìn)行放大處理時(shí),這種影響將更為明顯。而在其他應(yīng)用中,雙線性插值的斜率不連續(xù)性會(huì)產(chǎn)生不希望得到的結(jié)果。這兩種情況都可以通過(guò)高階插值得到修正,當(dāng)然這需要增加計(jì)算量。使用高階插值函數(shù)的例子有:三次樣條、Legendre中心函數(shù)和sin(αx)/α函數(shù)(即sin(αx)函數(shù))。高階插值常用卷積來(lái)實(shí)現(xiàn),這部分內(nèi)容請(qǐng)讀者參考書(shū)后所附的參考文獻(xiàn)。2.3.6.2圖像復(fù)合變換的示例圖2.3-32坐標(biāo)系的平移兩個(gè)坐標(biāo)系之間的坐標(biāo)變換矩陣表達(dá)式為:它的逆變換矩陣表達(dá)式是:

為了推導(dǎo)公式簡(jiǎn)單起見(jiàn),假設(shè)圖像未旋轉(zhuǎn)時(shí)中心坐標(biāo)為(a,b),旋轉(zhuǎn)后中心坐標(biāo)為(c,d)(在新的坐標(biāo)系下旋轉(zhuǎn)后新圖像左上角為原點(diǎn)),則旋轉(zhuǎn)變換矩陣表達(dá)式為(2.3-11)其逆變換表達(dá)式為(2.3-12)即(2.3-13)因此(2.3-14)

公式(2.3-10)說(shuō)明繞任意點(diǎn)(a,b)旋轉(zhuǎn)的幾何變換是由平移—旋轉(zhuǎn)—平移三個(gè)基本變換所構(gòu)成,即先將坐標(biāo)系平移到點(diǎn)(a,b),再進(jìn)行旋轉(zhuǎn),然后將旋轉(zhuǎn)后的圖像平移回原來(lái)的坐標(biāo)原點(diǎn)。

利用上面的轉(zhuǎn)換公式(2.3-12)~(2.3-14),就可以比較方便地編寫(xiě)出實(shí)現(xiàn)圖像旋轉(zhuǎn)的VC++函數(shù)。首先應(yīng)計(jì)算出公式中需要的幾個(gè)參數(shù):a,b,c,d和旋轉(zhuǎn)后新圖像的高、寬度。現(xiàn)在已知圖像的原始寬度為lWidth,高度為lHeight,以圖像中心為坐標(biāo)系原點(diǎn),則原始圖像四個(gè)角的坐標(biāo)分別為

按照旋轉(zhuǎn)公式(2.3-11)~(2.3-14),在旋轉(zhuǎn)后的新圖像中,這四個(gè)點(diǎn)坐標(biāo)為則新圖像的寬度lNewWidth和高度lNewHeight為lNewWidth=max(|fDstX4-fDstY1|,|fDstX3-fDstY2|)lNewHeight=max(|fDstX4-fDstY1|,|fDstX3-fDstY2|)如果令(2.3-15)由已知及假設(shè)由公式(2.3-13)得(2.3-16)

公式(2.3-16)、(2.3-17)便是圖像繞任意點(diǎn)(a,b)旋轉(zhuǎn)的變換公式,由此便可以編寫(xiě)出實(shí)現(xiàn)該變換的VC++程序。事實(shí)上,只要先按上述公式計(jì)算出旋轉(zhuǎn)后新圖像的高度和寬度以及常數(shù)f1和f2,并按照公式(2.3-17)計(jì)算出變換后圖像上的點(diǎn)(i0,j0)://計(jì)算該像素在源DIB中的坐標(biāo)

i0=-((float)j)*fsina+((float)i)*fcosa+f2;j0=((float)j)*fcosa+((float)i)*fsina+f1;2.3.7透視變換2.3.7.1透視變換把三維物體或?qū)ο筠D(zhuǎn)變?yōu)槎S圖形表示的過(guò)程稱為投影變換。根據(jù)視點(diǎn)(投影中心)與投影平面之間距離的不同,投影可分為平行投影和透視投影,透視投影即透視變換。平行投影的視點(diǎn)與投影平面之間的距離為無(wú)窮大,而對(duì)透視投影(變換),該距離是有限的。這個(gè)距離決定著透視投影的特性——透視縮小效應(yīng),即三維物體或?qū)ο笸敢曂队暗拇笮∨c形體到視點(diǎn)的距離成反比。例如,等長(zhǎng)的兩直線段,都平行于投影面,但離投影中心近的線段,其透視投影大,而離投影中心遠(yuǎn)的線段,透視投影小。這種效應(yīng)所產(chǎn)生的視覺(jué)效果與照相機(jī)系統(tǒng)和人的視覺(jué)系統(tǒng)十分類似。與平行投影相比,透視投影的深度感更強(qiáng),看上去更真實(shí),但透視投影不能真實(shí)地反映物體的精確尺寸和形狀。

對(duì)于透視投影,一束平行于投影面的平行線的投影可保持平行,而不平行于投影面的平行線的投影會(huì)聚集到一個(gè)點(diǎn),這個(gè)點(diǎn)稱為滅點(diǎn)(VanishingPoint)。滅點(diǎn)可以看作是無(wú)限遠(yuǎn)處的一點(diǎn)在投影面上的投影。透視投影的滅點(diǎn)可以有無(wú)限多個(gè),不同方向的平行線在投影面上就能形成不同的滅點(diǎn),坐標(biāo)軸方向的平行線在投影面上形成的滅點(diǎn)又稱作主滅點(diǎn)。因?yàn)橛衳,y和z三個(gè)坐標(biāo)軸,所以主滅點(diǎn)最多有3個(gè)。透視投影是按主滅點(diǎn)的個(gè)數(shù)來(lái)分類的,即按投影面與坐標(biāo)軸的夾角來(lái)分類的,可分為一點(diǎn)透視、二點(diǎn)透視和三點(diǎn)透視,如圖2.3-33所示。圖2.3-33透視變換(a)一點(diǎn)透視;(b)二點(diǎn)透視;(c)三點(diǎn)透視

下面討論一點(diǎn)透視。一點(diǎn)透視只有一個(gè)主滅點(diǎn),即投影面與一個(gè)坐標(biāo)軸正交,與另外兩個(gè)坐標(biāo)軸平行,如圖2.3-33(a)所示。進(jìn)行一點(diǎn)透視投影變換,要很好地考慮圖面布局,以避免三維形體或?qū)ο蟮钠矫嬗蚍e聚成直線或直線積聚成點(diǎn)而影響直觀性。具體地說(shuō),就是要考慮下列幾點(diǎn):①三維形體或?qū)ο笈c畫(huà)面(投影面)的相對(duì)位置;②視距,即視點(diǎn)與畫(huà)面的距離;③視點(diǎn)的高度。由此,假設(shè)視點(diǎn)在坐標(biāo)原點(diǎn),z坐標(biāo)軸方向與觀察方向重合一致,三維形體或?qū)ο笊夏骋稽c(diǎn)為P(x,y,z),一點(diǎn)透視變換后在投影面(觀察平面)UO′V上的對(duì)應(yīng)點(diǎn)為P′(x′,y′,z′),投影面與z軸垂直,且與視點(diǎn)的距離為d,z軸過(guò)投影面窗口的中心,窗口是邊長(zhǎng)為2S的正方形,如圖2.3-34所示。根據(jù)相似三角形對(duì)應(yīng)邊成比例的關(guān)系,有:(2.3-18)

利用齊次坐標(biāo),與二維幾何變換類似,將該過(guò)程寫(xiě)成變換矩陣形式為(2.3-19)圖2.3-34一點(diǎn)透視變換

一般地,視點(diǎn)不在原點(diǎn),投影平面是任意平面的情況,一點(diǎn)透視變換的矩陣也可以用一個(gè)4×4的矩陣表示。當(dāng)根據(jù)公式(2.3-19)求出它的逆變換后,可以用VC++編寫(xiě)一個(gè)實(shí)現(xiàn)圖像透視的程序,實(shí)現(xiàn)圖像的透視。2.3.7.2其他變換如前所述,齊次坐標(biāo)為確定各種基本變換和復(fù)合變換公式提供了一個(gè)簡(jiǎn)單的方法。然而,在許多圖像處理與分析應(yīng)用中,所需的幾何變換都相當(dāng)復(fù)雜,甚至有些無(wú)法用簡(jiǎn)便的數(shù)學(xué)式來(lái)表達(dá)。此外,所需幾何變換經(jīng)常要從對(duì)實(shí)際圖像的測(cè)量中獲得,因此更希望用這些測(cè)量結(jié)果而不是函數(shù)形式來(lái)描述幾何變換。例如,在對(duì)由攝像機(jī)拍攝的有幾何畸變的圖像進(jìn)行幾何校正時(shí),首先應(yīng)將一個(gè)矩形柵格目標(biāo)數(shù)字化并顯示出來(lái)。因?yàn)閿z像機(jī)中有幾何變形,所顯示的圖案不會(huì)是準(zhǔn)確的矩形,因此所求幾何變換應(yīng)能使其柵格圖案再次被復(fù)原為準(zhǔn)確的矩形,從而修正了攝像機(jī)產(chǎn)生的畸變。采用同樣的幾何變換可用于校正同一攝像機(jī)生成的數(shù)字化圖像(假定畸變與景物無(wú)關(guān)),由此可得到不畸變的圖像。

圖像幾何變換的一個(gè)重要應(yīng)用是消除由于攝像機(jī)導(dǎo)致的數(shù)字圖像的幾何畸變。當(dāng)需要從數(shù)字圖像中得到定量的空間測(cè)量數(shù)據(jù)時(shí),幾何校正被證明是十分重要的。某些圖像,例如,從衛(wèi)星上或飛機(jī)側(cè)視雷達(dá)上得到的圖像,都有相當(dāng)嚴(yán)重的幾何變形,這些圖像需要先經(jīng)過(guò)幾何校正,然后才能對(duì)其內(nèi)容做出解釋。一些圖像系統(tǒng)使用非矩形的像素坐標(biāo),例如,極坐標(biāo)、柱坐標(biāo)、球面坐標(biāo)等,用普通的顯示設(shè)備觀察這些圖像時(shí),必須先對(duì)它們進(jìn)行校正,也就是說(shuō),將其轉(zhuǎn)換為矩形像素坐標(biāo)。例如,在油(水)井套管缺陷識(shí)別中,有時(shí)需要將極坐標(biāo)系中的內(nèi)窺鏡圖像轉(zhuǎn)換為直角坐標(biāo)系中的圖像,然后進(jìn)行分析與處理,如圖2.3-35、2.3-36所示。圖2.3-35極坐標(biāo)系中的內(nèi)窺鏡圖像圖2.3-36轉(zhuǎn)換為直角坐標(biāo)系中的圖像

有時(shí)機(jī)器人的魚(yú)眼透鏡拍攝的變形嚴(yán)重的一幅圖像,也可以設(shè)計(jì)一個(gè)適當(dāng)?shù)膸缀巫儞Q將其校正到矩形坐標(biāo)系統(tǒng),這樣,可用立體視覺(jué)測(cè)距技術(shù)對(duì)機(jī)器人周圍的物體進(jìn)行三維空間定位。幾何變換的另一個(gè)應(yīng)用是對(duì)相似的圖像進(jìn)行配準(zhǔn),以便進(jìn)行圖像比較,典型的應(yīng)用是利用圖像相減來(lái)檢測(cè)運(yùn)動(dòng)或變化。有時(shí),為便于解釋需將圖像以另一種樣式表示,這時(shí)也會(huì)用到幾何變換,地圖繪制中的圖像投影也會(huì)用到幾何變換。例如,在利用從宇宙飛船傳回來(lái)的圖像,拼成地球、月球及行星的航拍鑲嵌地圖時(shí),就必須用幾何變換。有關(guān)這些變換及其應(yīng)用的詳細(xì)內(nèi)容請(qǐng)參閱書(shū)后的參考文獻(xiàn)。2.3.8

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝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ù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論