快速掃描算法提取魚眼圖像有效區域

這個原理還是來自於《魚眼圖像校正算法研究》 這是作者在這篇論文中提出的自己改進的算法(我姑且叫它快速掃描算法吧) 

 A=imread('F:\orl_zhifangtu\yuyan1.jpg');
>> T=40;
>> [m,n,k]=size(A);
for i=1:m-1
    for j=1:n
        I(i,j)=0.59*A(i,j,1)+0.11*A(i,j,2)+0.3*A(i,j,3);
        if(I(i,j)>=T)
           I(i+1,j)=0.59*A(i+1,j,1)+0.11*A(i+1,j,2)+0.3*A(i+1,j,3); 
           if(I(i+1,j)>=T)
               bottom=j;
               break;
           end
        end
    end
end
for i=m:-1:2
    for j=1:n
        I(i,j)=0.59*A(i,j,1)+0.11*A(i,j,2)+0.3*A(i,j,3);
        if(I(i,j)>=T)
           I(i-1,j)=0.59*A(i-1,j,1)+0.11*A(i-1,j,2)+0.3*A(i-1,j,3); 
           if(I(i-1,j)>=T)
               top=i;
               break;
           end
        end
    end
end
for j=1:n-1
    for i=1:m
        I(i,j)=0.59*A(i,j,1)+0.11*A(i,j,2)+0.3*A(i,j,3);
        if(I(i,j)>=T)
           I(i,j+1)=0.59*A(i,j+1,1)+0.11*A(i,j+1,2)+0.3*A(i,j+1,3); 
           if(I(i,j+1)>=T)
               right=j;
               break;
           end
        end
    end
end
for j=n:-1:2
    for i=1:m
        I(i,j)=0.59*A(i,j,1)+0.11*A(i,j,2)+0.3*A(i,j,3);
        if(I(i,j)>=T)
           I(i,j-1)=0.59*A(i,j-1,1)+0.11*A(i,j-1,2)+0.3*A(i,j-1,3); 
           if(I(i,j-1)>=T)
               left=j;
               break;
           end
        end
    end
end
>> R=max(abs((right-left)/2),abs((bottom-top)/2));
B=imcrop(A,[left,top,2*R,2*R]);
>> imshow(B)

這是效果圖

原圖是如下:



 這個算法大大的節約了時間 等一秒就出來了 不像之前那個逐行逐列掃描算法和區域生長算法一樣要等那麼久



後來我又換了一幅魚眼圖 又試了下 原圖:


下面是效果圖:


提取效果還是挺好的  作者的這個算法真的比區域生長算法省了太多時間 因爲區域生長是遍歷了所有像素點 而且每次還會重複很多  而這個的次數就很少 因爲只掃描了除了這個外接正方形以外的區域 所以很省時間

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章