Matlab图像处理-直方图均衡化原理方法

 时间:2024-10-15 08:58:25

1、打开图像[FileName, FilePath]=uigetfile('*.tif;*.jpg;*.png;*.img;*.gif;','请选择图像数据');str=[FilePath FileName];Image=imread(str);% 以对话框的形式选择打开一幅图像[M,N,nDims]=size(Image);Image=im2double(Image);%获取图像的尺寸和波段数

2、直方图均衡化HISTEQ=Image;for i=1:nDims % 分别对各波段进行直方图均衡化 H=Image(:,:,i); [counts,x]=imhist(H); % 计算各灰度级x的像素个数count loction=find(counts~=0); % 找到所有像素个数不为0的灰度级 MinCDF=min(counts(loction)); for j=1:length(loction) CDF=sum(counts(loction(1:j))); % 计算各灰度级像素个数累积分布CDF P=find(H==x(loction(j))); H(P)=(CDF-MinCDF)/(M*N-MinCDF); % 灰度转换公式 end HISTEQ(:,:,i)=H; % 将均衡化后各分量分别保存在结果中end

3、保存输出figure, %在同一窗口显示原图与灰度拉伸结果图if nDims==3||nDims==1 %若为灰度图和RGB艘凿窭锔真彩色图则以常规方式保存并输出 subplot(1,2,1),imshow(Image);title('原图'); subplot(1,2,2),imshow(HISTEQ);title('直方图均衡化'); imwrite(HISTEQ,'Result_HISTEQ.jpg','jpeg');else % 若为多波段遥感影像则按照TM 3,2,1组合形式保存并输出 subplot(1,2,1),imshow(Image(:,:,[3,2,1]));title('原图'); subplot(1,2,2),imshow(HISTEQ(:,:,[3,2,1]));title('直方图均衡化'); imwrite(HISTEQ(:,:,[3,2,1]),'Result_HISTEQ.tif','tiff');end%将直方图均衡化结果保存至当前目录并以Result_HISTEQ命名

  • Matlab等高线绘图攻略
  • 如何在matlab中使用矩阵的加法和减法?
  • MATLAB中右击菜单的两种创建方法
  • 用Mathematica学习微分几何——曲线论(一)
  • 如何在MATLAB中显示第一个卷积层的激活区域?
  • 热门搜索
    关于手抄报的图画 我们爱科学手抄报 课间十分钟手抄报 清明节英语手抄报内容 法律手抄报图片大全 关于四季的手抄报 安全教育手抄报大全 卫生手抄报内容 三年级上英语手抄报 关于对联的手抄报