一、滤波算法实现
1.1 维纳滤波(Wiener Filter)
% 维纳滤波实现(支持自适应窗口)
function filtered = wienerFilter(sarImg, windowSize)[rows, cols] = size(sarImg);pad = floor(windowSize/2);paddedImg = padarray(sarImg, [pad pad], 'symmetric');filtered = zeros(rows, cols);for i = 1:rowsfor j = 1:colswindow = paddedImg(i:i+2*pad, j:j+2*pad);localMean = mean(window(:));localVar = var(window(:));noiseVar = 0.01; % 假设噪声方差已知k = localVar / (localVar + noiseVar);filtered(i,j) = localMean + k*(sarImg(i,j)-localMean);endend
end
特点:通过局部信噪比自适应调整滤波强度,适用于相干斑噪声
1.2 Lee滤波(改进版)
function filtered = leeFilter(sarImg, windowSize)[rows, cols] = size(sarImg);pad = floor(windowSize/2);paddedImg = padarray(sarImg, [pad pad], 'replicate');filtered = zeros(rows, cols);for i = 1:rowsfor j = 1:colswindow = paddedImg(i:i+2*pad, j:j+2*pad);meanVal = mean(window(:));varVal = var(window(:));pixel = sarImg(i,j);if pixel > meanValfiltered(i,j) = meanVal + (pixel - meanVal) * (varVal / (varVal + 100));elsefiltered(i,j) = meanVal - (meanVal - pixel) * (varVal / (varVal + 100));endendend
end
优化点:引入动态权重系数,保留边缘信息更优
二、高级滤波技术
2.1 小波变换+双边滤波联合降噪
function denoised = wavelet_bilateral(sarImg, wavelet, level, sigmaD, sigmaR)% 小波预处理[c, l] = wavedec2(sarImg, level, wavelet);threshold = wthrmngr('dw1ddenoLVL','sqtwolog',c,l);c_thresh = wthresh(c, 's', threshold);preprocessed = waverec2(c_thresh, l, wavelet);% 双边滤波后处理denoised = imbilatfilt(preprocessed, sigmaD, sigmaR);
end
参数建议:
- 小波基:
db4(适用于SAR纹理) - 分解层数:3-5层
- 空间域σ:10-20
- 值域域σ:0
