當前位置:編程學習大全網 - 編程語言 - 求教:怎樣實現圖像匹配啊,最好有MATLAB源程序,急用啊

求教:怎樣實現圖像匹配啊,最好有MATLAB源程序,急用啊

您好!

實驗平臺

X86 PC,Windows XP sp2, Matlab 7.1

資源的獲取

圖片資源來自/UploadFiles/2006-3/327845185.jpg

操作很簡單,只需註意選點要均勻布開,以增加其代表性。選定完畢,File-> Save Points to Workspace將數據保存到工作區中。Workspace立刻多出兩個N×2的數組(其中N為選定的匹配點對數),分別為input_points和base_points,如:

input_points =

119.5185 193.5926

168.9012 242.9753

105.9383 140.5062

459.0247 131.8642

313.3457 257.7901

292.3580 165.1975

276.3086 33.0988

283.7160 380.0123

76.3086 297.2963

135.5679 83.7160

360.2593 313.3457

94.8272 446.6790

70.1358 354.0864

181.2469 361.4938

381.2469 460.2593

252.8519 433.0988

3.利用十字相關法調整選定了的匹配點。

這步可選。運行代碼:

% 3.Fine-tune the control points using cross-correlation.

input_points_corr = cpcorr(input_points,base_points,input,base); %optimism the points

input_points_corr為優化後在輸入圖片的對應匹配點。

4.計算變換公式的參數。

利用cp2tform,選定變換類型(即配準方法),計算變換參數。以下只需選定壹種即可。

% 4.Specify the type of transformation to be used and infer its parameters

% (1) not Fine-tune points

Tlinear = cp2tform(input_points,base_points,'linear conformal');

Taffine = cp2tform(input_points,base_points,'affine');

Tprojective = cp2tform(input_points,base_points,'projective');

Tpolynomial2 = cp2tform(input_points,base_points,'polynomial',2);

Tpolynomial3 = cp2tform(input_points,base_points,'polynomial',3);

Tpolynomial4 = cp2tform(input_points,base_points,'polynomial',4);

Tpiecewise = cp2tform(input_points,base_points,'piecewise linear');

Tlwm = cp2tform(input_points,base_points,'lwm');

% (2)Fine-tune points

fTlinear = cp2tform(input_points_corr,base_points,'linear conformal');

fTaffine = cp2tform(input_points_corr,base_points,'affine');

fTprojective = cp2tform(input_points_corr,base_points,'projective');

fTpolynomial2 = cp2tform(input_points_corr,base_points,'polynomial',2);

fTpolynomial3 = cp2tform(input_points_corr,base_points,'polynomial',3);

fTpolynomial4 = cp2tform(input_points_corr,base_points,'polynomial',4);

fTpiecewise = cp2tform(input_points_corr,base_points,'piecewise linear');

fTlwm = cp2tform(input_points_corr,base_points,'lwm');

諸如Tlinear的變量為壹個稱為TFORM的數據結構,尚沒做仔細研究:

Tlinear =

ndims_in: 2

ndims_out: 2

forward_fcn: @fwd_affine

inverse_fcn: @inv_affine

tdata: [1x1 struct]

5.變換圖像。

% 5.Transform the unregistered image to bring it into alignment.

title('image registration polynomial method');

subplot(2,2,1);

imshow(base);

title('Base image');

subplot(2,2,2);

imshow(input);

title('Input image');

subplot(2,2,3);

imshow(imtransform(input,Tpolynomial2));

title('registered image');

subplot(2,2,4);

imshow(imtransform(input,fTpolynomial2));

title('registered image(fine-tune points)');

結果如下:

/UploadFiles/2006-3/327783689.jpg

總結

1.image和imshow區別。前者視base,input此類二維圖片矩陣為索引圖像,在系統的index庫中選取顏色。

2.選擇適當的方法來建立轉換參數,並非算法越復雜越好,應參考成像因素(退化因素)。

3.尚沒有看出十字相關法的好處。

4. 利用cpselect選擇匹配點,cpselect可以返回壹個GUI句柄。欲實現如下功能:當打開cpselect GUI 時,m文件程序暫停運行,關閉之後繼續執行。因為對GUI編程不懂, 使用了waitfor,pause函數都沒法實現。嘗試中……

  • 上一篇:猜測編程
  • 下一篇:跨專業考結構力學真心看不懂。本科大學物理都沒學,是學計算機的。請問需要些什麽書。
  • copyright 2024編程學習大全網