function [OutImage,varargout]=Image_Stretching(Image,str_per,ImageName,varargin)
%==================================说明====================================
% 图像拉伸显示函数
% 函数作用:用于拉伸遥感图像
%
% 作者:胡礼珍
% 单位:厦门大学联合遥感接收站
% 邮件:hulizhen@xmu.edu.cn
%
% 输入:
% Image 遥感图像矩阵
% str_per 拉伸百分比*100
% 输出:
% OutImage 输出一个二维矩阵
% ImageName 将输出的矩阵保存为文件
%
% 语法:
% Image_Stretching(Image):Image输入参数表示遥感图像,是一个二维矩阵;
% [OutImage]=Image_Stretching(Image):OutImage输出参数表示经过线性拉伸uint8的格式的图像,是一个二维矩阵;
% Image_Stretching(Image,str_per):str_per输入参数表示拉伸百分比,比如str_per=2,表示2%线性拉伸;
% [OutImage]=Image_Stretching(Image,str_per):图像拉伸并输出;
% [OutImage]=Image_Stretching(Image,str_per,ImageName);ImageName输入参数表示保存处理后文件的名字及格式,如hlz.jpeg;
% 保存文件的格式有:
% bmp、gif、hdf、jpg、jpeg、jp2、pbm、pcx、pgm、png、pnm、ppm、ras、tif、tiff
% 注:tif和tiff格式不含地理信息
%==========================================================================
narginchk(1,3); %输入参数个数必须是1-3个,否则报错
nargoutchk(0,2); %输出参数个数必须是0-2个,否则报错
% 不同输入个数参数情况
if nargin == 1
str_per =2; %拉伸百分比*100默认为2%
end
% 第三个输入参数判别
if nargin == 3
temp1 = find(ImageName=='.');
% 有无“.”
if isempty(temp1)
errordlg('输出图像名字设置错误(没有“.”)','输入参数错误');
return; %终止运行程序
end
% 图像名字是否设置正确
if temp1 == 1
errordlg('输出图像名字设置错误(字符太短)','输入参数错误');
return; %终止运行程序
end
allform = ["bmp","gif","hdf","jpg","jpeg","jp2","pbm","pgm","png","pnm","ppm","ras","tif","tiff"];
temp2 = find(allform ==ImageName(temp1+1:end));
% 图像保存格式是否正确
if isempty(find(temp2, 1))
%disp('图像保存名字出错')
errordlg('输出图像格式错误','输入参数错误');
return; %终止运行程序
end
end
[row, col] = size(Image); %计算矩阵大小
% 计算边界像素筛选边界
bou_min = ceil(str_per/100*row*col); %算出最小边界
bou_max = row*col - bou_min; %算出最大边界
temp3 = reshape(Image,1,row*col); %重新排列-排列,目的是找出阈值
temp3 = sort(temp3); %重新排列-排序,目的是找出阈值
% 边界筛选阈值
VPT_min = double(temp3(bou_min)); %最小阈值
VPT_max = double(temp3(bou_max)); %最大阈值
% 边界以外的像素值处理
Image(Image<VPT_min)=VPT_min; %将小于阈值的元素赋值为最小阈值
Image(Image>VPT_max)=VPT_max; %将大于阈值的元素赋值为最大阈值
% 像素归一化
OutImage = uint8((255/(VPT_max-VPT_min))*Image); %图像(像素)归一化
figure
imshow(OutImage) %图像显示
% 保存图像
if nargin == 3
%saveas(gcf,'ImageName(1:temp1-1)','ImageName(temp1+1,end)'); %保存图像
imwrite(OutImage,ImageName)
end
end
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
本资源是SAR图像多视处理matlab代码,具体介绍可以参考我的博客:https://blog.csdn.net/weixin_41649786/article/details/129830511?spm=1001.2014.3001.5502 本资源含有5份.m文件 main.m 是主程序代码; Image_Stretching.m 是图像拉伸显示代码,是被调用的函数; SAR_Stretching.m 是SAR图像显示代码,是被调用的函数; multilook.m 是频域多视代码(核心),是被调用的函数; multilookmean.m 是时域多视代码(核心),是被调用的函数; 代码中,描述不清楚的,敬请斧正! 联系方式:hulizhen@xmu.edu.cn 注;由于SAR数据行列不一致,因此在multilook文件代码中,需要适当调整!!! 注;由于SAR数据行列不一致,因此在multilook文件代码中,需要适当调整!!! 注;由于SAR数据行列不一致,因此在multilook文件代码中,需要适当调整!!!
资源推荐
资源详情
资源评论
收起资源包目录
多视处理的代码.zip (6个子文件)
multilookmean.m 3KB
main.m 866B
multilook.asv 3KB
multilook.m 3KB
Image_Stretching.m 3KB
SAR_Stretching.m 1KB
共 6 条
- 1
心网千结
- 粉丝: 1122
- 资源: 24
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
- 1
- 2
- 3
- 4
前往页