以窗口形式进行数字图像处理时,在图像边界处对超出图像边界的窗口内容的映射(对称)处理

该博客介绍了在数字图像处理中,如何使用对称映射处理窗口超出图像边界的场景,特别是在InSAR中计算干涉图的相位标准差(PSD)的MATLAB代码实现。代码通过检查窗口像素是否超出图像边界,并对超出部分赋予对称像素值,然后计算每个窗口的相位标准差,最终得出整个图像的PSD。
摘要由CSDN通过智能技术生成

在数字图像处理时,我们经常会以窗口的形式进行相关的运算,如滤波处理,而在图像边界处,窗口可能太大以至于超出边界,这时候我们可以做一个映射(对称)处理,来补齐窗口中超出图像边界的部分。如下图,窗口大小是3*3大小,中间黄色像素为窗口中心像素,其位于图像左上角,对于窗口内超出图像边界的部分,分别将其赋值为以中心像素为对称中心的,与其对称的图像内像素的值。
请添加图片描述

现以InSAR中计算干涉图的相位标准差(PSD)的matlab代码来说明这个映射处理怎么用代码实现。(代码是我自己编写的,不一定效率最优)。

function [PSD] = calPSD(image,window_detrow,window_detcol)
%UNTITLED3 此处显示有关此函数的摘要
%   计算相位标准差图PSD
%   image为输入的干涉图,PSD为计算得到的相位标准差

% 窗口大小,必须为奇数,
if ~(mod(window_detrow,2) && mod(window_detrow,2))
    msgbox("窗口大小必须均为奇数!");
    return;
end
window_centerRow=(window_detrow+1)/2;
window_centerCol=(window_detcol+1)/2;
window_PixelNum=window_detrow*window_detcol;

[image_detrow,image_detcol]=size(image);

% 计算PSD
PSD=0;
for m=1:image_detrow
    for n=1:image_detcol
        % 窗口矩阵
        window=NaN(window_detrow,window_detrow);
        % 为窗口矩阵赋值
        for i_row=1:window_detrow
            for i_col=1:window_detcol
                % 每个窗口像素的实际行列数
                row=m + i_row - window_centerRow;
                col=n + i_col - window_centerCol;
                
                % 判断窗口像素是否超出图像边界大小
                % 如果超出,则将其赋值为该像素与窗口中心像素对称的像素的值
                if row < 1 || row > image_detrow
                    row=m-i_row+window_centerRow;
                end
                if col < 1 || col > image_detcol
                    col=n-i_col+window_centerCol;
                end
                window(i_row,i_col)=image(row,col);
            end
        end
        
        % 计算每个窗口的相位标准差detaPhi
        % 统计矩阵内像素值为空值的像素个数
        NaN_Num=0;
        for i_row=1:window_detrow
            for i_col=1:window_detcol
                if isnan(window(i_row,i_col))
                    NaN_Num=NaN_Num+1;
                end
            end
        end
        meanPhi=nansum(reshape(window,window_PixelNum,1))/(window_PixelNum-NaN_Num);
        
        detPhi=0;
        for i_row=1:window_detrow
            for i_col=1:window_detcol
                if ~isnan(window(i_row,i_col))
                    detPhi=detPhi+(window(i_row,i_col) - meanPhi)^2;
                end
            end
        end
        detaPhi=sqrt(1/(window_PixelNum-1-NaN_Num)*detPhi);
        
        % 计算PSD
        PSD=PSD+detaPhi;
    end
end
PSD=PSD/(image_detrow*image_detcol);

end


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值