1. 程式人生 > >基於Matlab手選控制點的非同源影象簡單配準

基於Matlab手選控制點的非同源影象簡單配準

摘要:本方法主要是通過呼叫matlab的工具函式實現非同源影象的簡單配準,精度要求不高時可以採用該方法。

baseIm= imread('6-im1.bmp');//讀入基準影象

[inputIm,map] = imread('6-g-org.bmp');//讀入待配準影象
H = cpselect(inputIm,baseIm);//手動選取基準點,並儲存儲存
load orgCP.mat;//載入基準點
%%選擇變換型別,不同的變換型別配準精度不一,選擇最優配準即可
type ='projective'% 'similarity'%'affine' %'piecewise linear'%'nonreflectivesimilarity'%'piecewise linear'%  ;
%%求出從待配準圖到基準圖的座標變換關係
T = cp2tform(input_points,base_points,type);
%%將待配準圖放到基準圖的座標系下,xRange是橫座標的取值範圍,yRange是縱座標的取值範圍,
%%Reg是配準後的影象
 [Reg xRange yRange] =imtransform(inputIm,T);
 [m1,n1,p1] = size(baseIm);
 [m2,n2,p2] = size(Reg);
%從配準後的大圖中擷取與基準圖等大的區域性影象
 rowStart = ceil(-yRange(1));
 rowEnd = floor(-yRange(1)+m1);
 colStart = ceil(-xRange(1));
 colEnd = floor(-xRange(1)+n1);
 regIm = Reg(rowStart:rowEnd,colStart:colEnd,:);
%寫影象
imwrite(regGray,['name' type ' .bmp']);
 %顯示配準結果圖
 figure;
 subplot 121;imshow(baseIm);title('BaseImage');

 subplot122;imshow(regGray);title(['Registration Image using ' type]);

該方法的實驗結果:

                      基準圖                                                 待配準影象

         

                   affine變換 配準結果                         similarity變換 配準結果

         

<pre code_snippet_id="112113" snippet_file_name="blog_20131214_1_4149463" name="code" class="plain"><pre code_snippet_id="112113" snippet_file_name="blog_20131214_1_4149463" name="code" class="plain"><pre code_snippet_id="112113" snippet_file_name="blog_20131214_1_4149463" name="code" class="python"><div style="top:0px"><pre code_snippet_id="112113" snippet_file_name="blog_20131214_1_4149463" name="code" class="plain"><pre code_snippet_id="112113" snippet_file_name="blog_20131214_1_4149463">