matlab 實現滑動窗口遍歷整張圖像進行塊處理

(1)滑動窗口不需要邊緣擴展且可以直接對塊圖像進行操作

    num1 = 3;
    num2 = 3;
    
    [m,n] = size(I);
    mm = m-num1;
    nn = n-num2;
    for i = 1:1:mm
        for j = 1:1:nn
            Block = I(i:i+num1,j:j+num2);%需要對Block處理的下面可以操作
    
            if(((j+num2) >= n)||((j+num2) >= n))
                break;
            end
        end
    end

(2)滑動窗口遍歷圖像,算法主要針對中心像素,相鄰像素的值可以通過已經計算好的整張圖像的值直接取值,而不需要取出塊後再計算,以求解中心點和相鄰點的二階包裹相位差爲例。

    I=padarray(I,[1,1],'both'); 
    [m,n]=size(I);
    for i=2:m-2
        for j=2:n-2
            H(i,j)= wrapToPi(I(i,j-1)-I(i,j))-wrapToPi(I(i,j)-I(i,j+1));
            V(i,j)= wrapToPi(I(i-1,j)-I(i,j))-wrapToPi(I(i,j)-I(i+1,j));
            D1(i,j)= wrapToPi(I(i-1,j-1)-I(i,j))-wrapToPi(I(i,j)-I(i+1,j+1));
            D2(i,j)= wrapToPi(I(i-1,j+1)-I(i,j))-wrapToPi(I(i,j)-I(i+1,j-1));
        end
    end

 

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