圖像配准是數字圖像處理的一種重要應用,用於對齊兩幅或多幅相同場景的圖片。
圖像配准需要輸入圖像與參考圖像。輸入圖像是我們希望變換的圖像,參考圖像是想要配准輸入圖像的圖像。如:
圖像配准的主要方法是使用約束點,輸入圖像產生輸出圖形的特定變換通常是不知道,所以需要估計變換函數,而估計變換函數問題是建模問題之一。
基於雙線性近似的簡單模型:
x = c1v + c2w + c3vw + c4;
y = c5v + c6w + c7vw + c8;
(v, w)和(x, y)分別是輸入圖像和參考圖像中約束點的坐標。如果在兩幅圖像中有四對相應的約束點,則可以解出8個未知參數。這樣構成簡單模型,從而可以把一幅圖像的像素變換為另一幅圖像的像素位置。
當然可以選擇更復雜的模型,如最小均方算法等。
圖像配准示例代碼:
1、讀入參考圖像和要配准的輸入圖像
I_base = imread('D:\圖像處理\image\lena1.jpg');
I_in = imrotate(I_base,30);
subplot(121)
imshow(I_base(:,:,1))
title('參考圖片')
subplot(122)
imshow(I_in(:,:,1))
title('輸入圖片')
結果:
2、標准基准點對,將其保存至工作空間。
利用matlab提供的cpselect函數可以交互式地選擇基准點。在命令行中按照以下方式調用cpselect啟動交互工具
>> cpselect(I_in(:,:,1),I_base(:,:,1));
在該control point select窗口中,點擊tool里面的add point一項進行手工標注點(交互式標點),然后在file菜單里export points to workspace 即可輸出表定點的坐標位置。
注意:調用cpselect()函數要將需要配准的圖像作為第一參數,將基准圖像作為后一個參數。並且cpselect只接受灰度圖像,如果需要處理RGB彩色圖像,可以只給CPselect函數傳遞一個圖像的層。
根據之前得到的控制點對坐標,利用cp2tform函數可以計算變換的參數。將基准點對作為輸入傳遞給cp2tform,選擇一種適當的變換類型,cp2tform函數就能確定該類型變換所需的參數,實際上相當於一種數據擬合。cp2tform函數尋找能夠擬合控制點對的變換參數,返回一個TFORM的結構的幾何變換結構,其中包括幾何變換的類型和參數
tform = cp2tform(movingPoints1,fixedPoints1,'affine');
I_out = imtransform(I_in,tform);
figure
subplot(121)
imshow(I_base);
title('參考圖像');
subplot(122)
imshow(I_out);
title('輸出圖像');
最終結果: