SAR 图像是一幅灰度图像,由于极少数点(金属、裸地、建筑)的后向散射太强,而导致SAR图像强度图的值分布范围很广,而图像显示值的分布为[0,255],因此,如果直接显示,将会导致图像颜色很暗,甚至是一片全黑。本博客利用matlab,实现SAR图像线性拉伸,从而更好的展现图像。
其主要步骤有:S1.根据线性拉伸百分比,找出最小、最大阈值,并将值域外的值重新赋值;S2.图像像素值归一化。
步骤S1代码:
% Image 遥感图像矩阵
% str_per 拉伸百分比*100
[row, col] = size(Image); %计算矩阵大小bou_min = ceil(str_per/100*row*col); %算出最小边界
bou_max = row*col - bou_min; %算出最大边界temp = reshape(Image,1,row*col); %重新排列-排列,目的是找出阈值
temp = sort(temp); %重新排列-排序,目的是找出阈值VPT_min = double(temp(bou_min)); %最小阈值
VPT_max = double(temp(bou_max)); %最大阈值Image(Image<VPT_min)=VPT_min; %将小于阈值的元素赋值为最小阈值
Image(Image>VPT_max)=VPT_max; %将大于阈值的元素赋值为最大阈值
步骤S2代码:
I = uint8((255/(VPT_max-VPT_min))*Image); %图像(像素)归一化
imshow(I) %显示
整体代码:
function Image_Stretching(Image,str_per)
%% 图像拉伸显示函数
% 单位:厦门大学联合遥感接收站
% 作者:胡礼珍
% 函数作用:用于拉伸遥感图像
% 输入:
% Image 遥感图像矩阵
% str_per 拉伸百分比*100
%
[row, col] = size(Image); %计算矩阵大小bou_min = ceil(str_per/100*row*col); %算出最小边界
bou_max = row*col - bou_min; %算出最大边界temp = reshape(Image,1,row*col); %重新排列-排列,目的是找出阈值
temp = sort(temp); %重新排列-排序,目的是找出阈值VPT_min = double(temp(bou_min)); %最小阈值
VPT_max = double(temp(bou_max)); %最大阈值Image(Image<VPT_min)=VPT_min; %将小于阈值的元素赋值为最小阈值
Image(Image>VPT_max)=VPT_max; %将大于阈值的元素赋值为最大阈值I = uint8((255/(VPT_max-VPT_min))*Image); %图像(像素)归一化
imshow(I) %显示
end
引用时请标明出处,谢谢!
路漫漫其修远兮,吾将上下而求索