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

下載本文檔

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

文檔簡介

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

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

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

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

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

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

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

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

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

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

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

【例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)換為在每一灰度級上都有相同的像素點數(shù)(即輸出的直方圖是平坦的,其分布為均勻分布)。直方圖均衡化的結(jié)果擴展了像元取值的動態(tài)范圍,從而達到增強圖像整體對比度的效果。直方圖均衡化參考以下示例。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、點運算的應(yīng)用(1)對比度增強

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

點運算可消除圖像傳感器的非線性的影響。(3)顯示標定

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

(4)輪廓線

點運算可為圖像加上輪廓線。

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

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

{gi(x,y)}i=1,2,...M其中:gi(x,y)=f(x,y)+h(x,y)IM個圖像的均值定義為:g(x,y)=1/M[g0(x,y)+g1(x,y)+…+gM(x,y)]當噪音h(x,y)i為互不相關(guān),且均值為0時,上述圖象均值將降低噪音的影響。去除“疊加性”噪音對于原圖象f(x,y),有一個噪音圖像集{gi(x,y)}i=1,2,...M其中:gi(x,y)=f(x,y)+ei(x,y)當:噪音ei(x,y)為互不相關(guān),且均值為0時,上述圖象均值將降低噪音的影響。M個圖像的均值為:則是的無偏估計利用同一景物的多幅圖像取平均、消除噪聲。取M個圖像相加求平均得到1幅新圖像,一般選8幅取平均。當:噪音e(x,y)i為互不相關(guān),且均值為0時,上述圖像均值將降低噪音的影響?!纠?.4】把一幅圖像加上高斯噪聲,再通過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實現(xiàn)圖像的加法運算,其語法格式為:

z=imadd(A,B)

其中A為圖像,若B是一幅圖像,則z為兩個圖像的求和,此時要求B的大小必須和A相等;若B是一個標量(雙精度),則z表示對圖像A整體加上某個值,即圖像的亮度調(diào)整。I=imread('rice.png');j=50;K=imadd(I,j);//等價于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);%對原始圖像加高斯噪聲,

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)減法運算圖像相減常用于檢測變化及運動的物體,圖像相減運算又稱為圖像差分運算。

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

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

求梯度幅度圖像的減法運算也可應(yīng)用于求圖像梯度函數(shù)梯度定義形式:梯度幅度(模)梯度幅度的近似計算:梯度幅度的應(yīng)用梯度幅度圖像梯度幅度在邊緣處很高;在均勻的肌肉纖維的內(nèi)部,梯度幅度很低。在MATLAB中,圖像的減法用imsubtract和imabsdiff函數(shù)可以完成,其語法格式為:z=imsubtract(a,b);%差值結(jié)果小于0的賦值為0;a、b大小相等。z=imabsdiff(a,b)%差值結(jié)果取絕對值減法的MATLAB實現(xiàn)clear;a=imread('rice.png');%讀取圖像figure(1);imshow(a);%顯示原始圖像background=imopen(a,strel('disk',15));%在a上進行形態(tài)學(xué)運算;ap=imsubtract(a,background);%減法運算函數(shù)figure(2);imshow(background);%圖像輸出背景figure(3);imshow(ap,[]);%減法運算結(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)乘法運算乘法的定義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實現(xiàn)乘法運算函數(shù)d=uint8(d);subplot(131);imshow(a);subplot(132);imshow(b);subplot(133);imshow(d);乘法的matlab實現(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)除法運算遙感圖像處理舉例 圖a、b分別是陸地衛(wèi)星的TM3、TM4波段,圖c是對兩個波段進行比值處理(除法運算)的結(jié)果。所采用的公式為式中,C為比例因子,用于增加比值圖像的對比度。 如圖,比值處理前,兩個波段的陰影(十字光標附近)都非常嚴重,陰、陽坡無法區(qū)分,當然更無法識別不同的地物類型。比值處理后,圖像的陰影部分基本消失,可以很明顯的區(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實現(xiàn)邏輯運算(LogicalOperation)圖3.7圖像的邏輯運算(a)A圖(b)B圖

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

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)用實例2.3.1幾何變換基礎(chǔ)2.3.1.1概述圖像的幾何變換,是指使用戶獲得或設(shè)計的原始圖像。按照需要產(chǎn)生大小、形狀和位置的變化。從圖像類型來分,圖像的幾何變換有二維平面圖像的幾何變換和三維圖像的幾何變換以及由三維向二維平面投影變換等。從變換的性質(zhì)分,圖像的幾何變換有平移、比例縮放、旋轉(zhuǎn)、反射和錯切等基本變換,透視變換等復(fù)合變換,以及插值運算等。

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

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

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

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

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

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

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

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

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

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

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

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

這樣,平移后的圖像上的每一點都可以在原圖像中找到對應(yīng)的點。例如,對于新圖中的(0,0)像素,代入上面的方程組,可以求出對應(yīng)原圖中的像素(-Δx,-Δy)。如果Δx或Δy大于0,則點(-Δx,-Δy)不在原圖像中。對于不在原圖像中的點,可以直接將它的像素值統(tǒng)一設(shè)置為0或者255(對于灰度圖就是黑色或白色)。同樣,若有像素點不在原圖像中,也就說明原圖像中有點被移出顯示區(qū)域。如果不想丟失被移出的部分圖像,可以將新生成的圖像寬度擴大|Δx|,高度擴大|Δy|。圖2-3-13平移前的圖像圖2-3-14平移后的圖像圖2-3-15平移擴大后的圖像1.平移的變換公式(x0,y0)是原圖像上的點,圖像水平平移量為a,垂直平移量為b,如圖所示。平移后的新坐標點為: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)變換分為兩種:一種是水平鏡像,另外一種是垂直鏡像。圖像的水平鏡像操作是將圖像左半部分和右半部分以圖像垂直中軸線為中心進行鏡像對換;圖像的垂直鏡像操作是將圖像上半部分和下半部分以圖像水平中軸線為中心進行鏡像對換,如圖2-3-16所示。圖2-3-16圖像的鏡像

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

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

逆運算矩陣表達式為即圖像鏡像水平鏡像:圖像的左半部分和右半部分以圖像豎直中軸線為中心軸進行對換。垂直鏡像:圖像的上半部分和下半部分以圖像水平中軸線為中心軸進行對換。1.水平鏡像的變換公式(x0,y0)是原圖像上的點,中心軸如圖所示,水平鏡像對應(yīng)的新坐標點為:x1=M-x0;y1=y0;0yxx0y0x1y1水平鏡像MJ(X1,Y1)=I(X0,Y0)J(i,j)=I(M-i,j)2.垂直鏡像的變換公式(x0,y0)是原圖像上的點,中心軸如圖所示,垂直鏡像對應(yīng)的新坐標點為: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中實現(xiàn)鏡像的函數(shù)水平鏡像和垂直鏡像的變換矩陣:水平鏡像的matlab實現(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)是原圖像上的點,轉(zhuǎn)置后對應(yīng)的新坐標點為:x1=y0;y1=x0;注意:圖像尺寸有可能改變。2.程序?qū)崿F(xiàn):3.MATLAB中實現(xiàn)圖像轉(zhuǎn)置的函數(shù):圖像轉(zhuǎn)置的變換矩陣:2.3.4圖像比例縮放2.3.4.1圖像比例縮放變換圖像比例縮放是指將給定的圖像在x軸方向按比例縮放fx倍,在y軸方向按比例縮放fy倍,從而獲得一幅新的圖像。如果fx=fy,即在x軸方向和y軸方向縮放的比率相同,稱這樣的比例縮放為圖像的全比例縮放。如果fx≠fy,圖像的比例縮放會改變原始圖像的像素間的相對位置,產(chǎn)生幾何畸變。設(shè)原圖像中的點P0(x0,y0)比例縮放后,在新圖像中的對應(yīng)點為P(x,y),則P0(x0,y0)和P(x,y)之間的對應(yīng)關(guān)系如圖2-3-3所示。圖2-3比例縮放圖像縮放圖像縮放:指圖像大小按照指定的比率放大或者縮小。圖像尺寸會發(fā)生變化。1、圖像縮放的公式0yxx0y0x1y1縮放(x0,y0)是原圖像上的點,縮放后對應(yīng)的新坐標點為:x1=a*x0;y1=b*y0;注意:圖像尺寸有可能改變。

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

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

放大2倍1121.53242.5536(1)等比例縮小例如:在圖像的縮放中,將一幅6×6的圖像按比例縮小,fx=fy=1/2,圖像的長和寬均縮小到原來的一半,成為一幅3×3的圖像。原圖像的象素從(0,0)到(5,5),新圖像的象素從(0,0)到(2,2)。如下圖:6×6的原圖f新圖中的坐標值利用縮放公式計算得到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)在坐標X現(xiàn)=X原/f(x)=1x/2原原來坐標(0,0)(0,2)(0,4)(2,0)(2,2)(2,4)(4,0)(4,2)(4,4)

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

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

當fx≠fy(fx,fy>0)時,圖像不按比例縮小,這種操作因為在x方向和y方向的縮小比例不同,一定會帶來圖像的幾何畸變。圖像不按比例縮小的方法是:如果M×N大小的舊圖像F(x,y)縮小為k1M×k2N(k1<1,k2<1)大小的新圖像G(x,y)時,則

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

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

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

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

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

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

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

雙線性插值在圖象處理中需要將線形插值擴展到二維的情況,即采用雙線形插值(BilinearIntrepolation)例如:已知四點f(x0,y0),f(x0,y2),f(x2,y0),f(x2,y2)的灰度,要求g(x1,y1)點的灰度,可以先在水平方向上由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)

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

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

利用公式(2.3-5)可以確定旋轉(zhuǎn)后圖像上的像素。例如,當θ=30°時,公式(2.3-5)為而且,此時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)進行圖像旋轉(zhuǎn)時需要注意如下兩點:(1)圖像旋轉(zhuǎn)之前,為了避免信息的丟失,一定要有坐標平移,具體的做法有如圖2.3-24所示的兩種方法。圖2.3-24圖像旋轉(zhuǎn)之前進行的平移

(2)圖像旋轉(zhuǎn)之后,會出現(xiàn)許多空洞點,如圖2.3-23所示。對這些空洞點必須進行填充處理,否則畫面效果不好,一般也稱這種操作為插值處理。最簡單的方法是行插值方法或列插值方法:①找出當前行的最小和最大的非白點的坐標,記作:(i,k1)、(i,k2)。②在(k1,k2)范圍內(nèi)進行插值,插值的方法是:空點的像素值等于前一點的像素值。③同樣的操作重復(fù)到所有行。經(jīng)過如上的插值處理之后,圖像效果就變得自然。如圖2.3-25所示。列插值方法與此類同,請讀者自己給出。圖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)后對應(yīng)的新坐標點為: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、圖像以圖像中心為中心點的旋轉(zhuǎn)公式(x0,y0)是原圖像上的點,L為(x0,y0)到原點的距離。有: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)后對應(yīng)的新坐標點為: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中實現(xiàn)圖像旋轉(zhuǎn)的函數(shù):

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

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

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

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

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

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

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

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

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

在這里還要說明一點,為了提高雙線性插值的速度,雙線性插值也可以分解為三個線性插值來實現(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)]

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

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

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

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

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

按照旋轉(zhuǎn)公式(2.3-11)~(2.3-14),在旋轉(zhuǎn)后的新圖像中,這四個點坐標為則新圖像的寬度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)便是圖像繞任意點(a,b)旋轉(zhuǎn)的變換公式,由此便可以編寫出實現(xiàn)該變換的VC++程序。事實上,只要先按上述公式計算出旋轉(zhuǎn)后新圖像的高度和寬度以及常數(shù)f1和f2,并按照公式(2.3-17)計算出變換后圖像上的點(i0,j0)://計算該像素在源DIB中的坐標

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圖形表示的過程稱為投影變換。根據(jù)視點(投影中心)與投影平面之間距離的不同,投影可分為平行投影和透視投影,透視投影即透視變換。平行投影的視點與投影平面之間的距離為無窮大,而對透視投影(變換),該距離是有限的。這個距離決定著透視投影的特性——透視縮小效應(yīng),即三維物體或?qū)ο笸敢曂队暗拇笮∨c形體到視點的距離成反比。例如,等長的兩直線段,都平行于投影面,但離投影中心近的線段,其透視投影大,而離投影中心遠的線段,透視投影小。這種效應(yīng)所產(chǎn)生的視覺效果與照相機系統(tǒng)和人的視覺系統(tǒng)十分類似。與平行投影相比,透視投影的深度感更強,看上去更真實,但透視投影不能真實地反映物體的精確尺寸和形狀。

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

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

利用齊次坐標,與二維幾何變換類似,將該過程寫成變換矩陣形式為(2.3-19)圖2.3-34一點透視變換

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

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

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

溫馨提示

  • 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. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論