问题分析

内容 1:图像增强显示

  • 编写一个灰度拉伸函数,实现功能:将原始图像的灰度值以线性方式拉伸到 0-255 之间。

  • 读取./data/flower.tif 文件,显示原始图像、原始图像的直方图,然后分别采用上述步骤中编写的函数、imadjust 函数以实现图像增强,并显示图像增强后的效果以及相应的图像直方图。

  • 读取./data/mars_moon.tif 文件,显示原始图像、原始图像的直方图,阅读imadjust 函数,理解 gamma 参数的意义,然后设置不同的 gamma 值进行图像增强,并显示图像和增强后的图像直方图。

内容 2:直方图均衡化

  • 根据直方图均衡化的原理,实现直方图均衡化功能,编写直方图均衡化函数。

  • 读取./data/flower.tif 文件,分别利用你编写的直方图均衡化函数和 histeq。

  • 函数对其进行直方图均衡化操作,比较显示效果,以及直方图形态。

内容 3:直方图匹配

  • 读取./data/bhtmref.img 文件,以./data/bhtmref_reference.tif 文件为参考图像,对所有波段图像进行直方图匹配,并使用 writeenvi 函数输出匹配后的图像为 img 格式。

实验数据

  • flower.tif,多波段图像文件;

  • mars_moon.tif,灰度图像;

  • bhtmref.img,遥感图像;

  • bhtmref_reference.tif ,遥感图像直方图匹配的参考。

操作步骤

直方图拉伸

1 灰度拉伸函数

%%灰度拉伸函数
function  Img2 = enhance( Img )
%UNTITLED 此处显示有关此函数的摘要
%   此处显示详细说明low=min(min(Img));hi=max(max(Img));cha=hi-low;Img2=(Img-low).*(255/cha);return
end

2 图像拉伸

%% 图像拉伸
% 读取./data/flower.tif 文件,显示原始图像、原始图像的直方图,然后分别
% 采用上述步骤中编写的函数、imadjust 函数以实现图像增强,并显示图像增强后
% 的效果以及相应的图像直方图。img=imread('flower.tif');
img2=enhance(img);
img3=imadjust(img);figure(1)
subplot(3,2,1)
imshow(img)
title('原图')
subplot(3,2,2)
imhist(img,64)
subplot(3,2,3)
imshow(img2)
subplot(3,2,4)
imhist(img2,64)
subplot(3,2,5)
imshow(img3)
subplot(3,2,6)
imhist(img3,64)

4 GAMMA参数的调整

%% gamma参数的调整
% 读取./data/mars_moon.tif 文件,显示原始图像、原始图像的直方图,阅读
% imadjust 函数,理解 gamma 参数的意义,然后设置不同的 gama 值进行图像增强,
% 并显示图像和增强后的图像直方图% GAMMA指定描述关系的曲线的形状
% 在I和J中的值之间。如果GAMMA小于1,则映射为
% 向更高(更亮)的输出值加权。如果GAMMA大于
% 如果大于1,则映射将向较低(较暗)的输出值进行加权。如果
%如果省略参数,GAMMA默认为1(线性映射)。img4=imread('mars_moon.tif');
img5=imadjust(img4,[],[],0.2);
img6=imadjust(img4,[],[],5);figure(2)
subplot(3,2,1)
title('原图')
imshow(img4)
subplot(3,2,2)
imhist(img,64)
subplot(3,2,3)
imshow(img5)
subplot(3,2,4)
imhist(img2,64)
subplot(3,2,5)
imshow(img6)
subplot(3,2,6)
imhist(img3,64)

直方图均衡化

1 均衡化函数

function  outImage  = junheng( image )
%均衡化函数% 统计每个灰度的像素值的累计数目
[height, width] = size(image);
NumPixel = zeros(1,256);  % 建立一个256列的行向量,以统计各灰度级的像素个数
for i = 1 : heightfor j = 1 : widthk = image(i,j);  % k是像素点(i,j)的灰度值% 因为NumPixel数组的下标是从1开始的,但是图像像素的取值范围是0~255% 所以用NumPixel(k+1)NumPixel(k+1) = NumPixel(k+1) + 1;  % 对应灰度值像素点数量加1end
end% 接下来,将频数值算为频率
ProbPixel = zeros(1,256); % 统计各灰度级出现的频率
for i = 1 : 256ProbPixel(i) = NumPixel(i) / (height * width);
end% 再用函数cumsum()来计算累积分布函数(CDF),并将频率(取值范围是0~1)映射到0~255的无符号整数
CumPixel = cumsum(ProbPixel);  % 这里的数组CumPixel大小也是1×256
CumPixel = uint8((256-1) .* CumPixel + 0.5); % 在下列用作直方图均衡化实现的赋值语句右端,image(i,j)被用来作为CumPixel的索引
% 例如,image(i,j)=120,则从CumPixel中取出第120个值作为image(i,j)的新像素值
outImage = uint8(zeros(height, width));  % 预分配数组
for i = 1 : heightfor j = 1 : widthoutImage(i,j) = CumPixel(image(i,j));end
endend

2 均衡化应用

%% 直方图均衡化img=imread('flower.tif');
img2=junheng(img);
img3=histeq(img);figure(1)
subplot(3,2,1)
imshow(img)
title('原图')
subplot(3,2,2)
imhist(img,64)subplot(3,2,3)
imshow(img2)
title('均衡化')
subplot(3,2,4)
imhist(img2,64)
subplot(3,2,5)
imshow(img3)
title('均衡化')
subplot(3,2,6)
imhist(img3,64)

直方图匹配

%% 直方图匹配
% 读取./data/bhtmref.img 文件,以./data/bhtmref_reference.tif 文件为参考图
% 像,对所有波段图像进行直方图匹配,并使用 fwriteenvi 函数输出匹配后的图像
% 为 img 格式
ref=imread('bhtmref_reference.tif');
img=freadenvi('bhtmref.img');
HistRef=imhist(ref);
img=uint8(img);
[m,n,p]=size(img);
newImg=[];
figure;
imshow(ref)
for i=1:pmatched = histeq(img(:,:,i),HistRef);newImg=cat(3,newImg,matched);
end
figure(2);
for i=1:psubplot(2,3,i)imshow(newImg(:,:,i))
end
fwriteenvi('bhtmref_new.img',newImg);

matlab直方图拉伸、均衡化和匹配相关推荐

  1. Matlab直方图的均衡化

    %%------------------------Matlab直方图的均衡化------------------------------- %-------------------头文件------ ...

  2. 学习笔记(二)——直方图均衡化和匹配

    本文为原创作品,转载请注明出处 欢迎关注我的博客:http://blog.csdn.net/hit2015spring和http://www.cnblogs.com/xujianqing/ 作者: 晨 ...

  3. C语言数字图像处理---1.4直方图拉伸和直方图均衡化

    本篇将延续上一篇的内容,对直方图进行扩展,讲述直方图拉伸和直方图均衡化两个内容,并通过简单的C语言来实现这两个基础功能,让初学者通俗易懂. 直方图拉伸 [定义与算法]         直方图拉伸也叫做 ...

  4. MATLAB——直方图操作

    直方图均衡化 代码: I=dicomread('img');%img为输入的图像文件 [h]=imhist(I); I1=histeq(I,256); [h1]=imhist(I1); subplot ...

  5. Mtlab中函数histeq的使用及直方图的均衡化、规定化

    直方图均衡化 均衡化处理的目的是得到比原图具有更高对比度的扩展了动态范围的图像. 原理 假设灰度级为归一化至范围[0,1]内的连续量,并令pr(r)p_r(r)pr​(r)表示给定图像中灰度级的概率密 ...

  6. histeq函数实现直方图的均衡化和规定化

    %histeq函数实现直方图的均衡化和规定化 clear,clc,close all; Image1 = rgb2gray(imread('baboon.jpg')); Hgram = imhist( ...

  7. python绘制灰度图片直方图-python数字图像处理实现直方图与均衡化

    在图像处理中,直方图是非常重要,也是非常有用的一个处理要素. 在skimage库中对直方图的处理,是放在exposure这个模块中. 1.计算直方图 函数:skimage.exposure.histo ...

  8. 图像归一化处理 相同像素_图像处理学习笔记(九)——灰度直方图及其均衡化(理论篇)...

    本篇介绍灰度直方图和均衡化,也是属于图像灰度变换得范畴: 一.直方图 直方图:表示图像中具有某种灰度级的像素的个数,反映了图像中每种灰度出现的频率.是图像最基本的统计特征. 横坐标:灰度级: 纵坐标: ...

  9. OpenCV:实现灰度直方图和单通道直方图拉伸

    原文链接:http://blog.csdn.net/xiaowei_cqu/article/details/7600666 本文略有修改,如有疑问或者版权问题,请移步原作者或者告知本人. 直接贴代码: ...

  10. opencv python 实现灰度图像和彩色图像直方图全局均衡化和自适应均衡化

    首先进行简单的灰度图像的全局均衡化和自适应均衡化 import cv2 as cv import numpy as npimg = cv.imread('cun.jpg',0)# 全局直方图均衡化 i ...

最新文章

  1. Go实现简单的K-V存储
  2. 前端打包利器webpack里utils.cssLoaders的工作原理调试
  3. 高并发系统三大利器之缓存
  4. TensorFlow2.0:维度变换
  5. oracle alert.log查找,oracle alert.log位置
  6. linux与WINDOWS计算MD5值的自带小工具
  7. TR外汇黑平台资金盘深度揭秘,谨防上当受骗,迟早会跑路
  8. ElasticSearch系列之什么是ElasticSearch?
  9. 2008 r2 php mysql_Win2008 R2 IIS7.5+PHP5(FastCGI)+MySQL5环境搭建教程
  10. TeamViewer远程访问打开软件黑屏
  11. SQL零基础入门学习(十一)
  12. java邮箱465端口发送验证码,htmlmail465,465端口发邮件
  13. 阅读 | 《娱乐至死》笔记 | Part1
  14. AnyRTC将携互动直播连线2016杭州·云栖大会
  15. 华医通显示连接服务器失败,华医通app怎么用 华医通app使用教程
  16. 【张小平工作日志】DBCP、c3p0、Druid、Proxool数据库连接池比较
  17. 西安西北大学计算机排名,全国计算机排名真是这样吗?
  18. 【Android】 炫酷霓虹灯
  19. 情感驿站 | 为人处世的行为准则总结
  20. 基于HTML+CSS实现的可交互照片墙Web页面

热门文章

  1. Win7安装CENTOS
  2. MAC 系统下怎么新建一个桌面
  3. PCM音频压缩A-Law算法,uLaw
  4. ImportError: DLL load failed while importing shell: 找不到指定的模块。
  5. ImportError: DLL load failed while importing Qsci
  6. React-Router 刷新后报错 or Cannot GET /detail
  7. 实名认证 芝麻认证 人脸识别 集成
  8. 10个切片动作过渡PR预设
  9. 大天使之剑H5游戏超详细图文架设教程
  10. vue2.x使用Relation Graph 人物关系图谱