一、实验目的与要求

1.掌握图像灰度直方图的概念及其计算方法,编写灰度直方图统计程序。
2.通过对图像直方图的分析,学习应用直方图法解决诸如图像二值化等具体问题。
3.熟悉直方图均衡化的计算过程及其应用。
4.掌握图像灰度变换技术,通过调整图像的对比度和亮度等参数,改善视觉效果。

二、实验相关知识

直方图是图像最基本的统计特征,是图像亮度分布的概率密度函数,反映了图像灰度值的分布情况。直方图是多种空间域处理技术的基础。直方图操作能有效地用于图像增强,如通过直方图均衡化处理,可使图像在整个灰度级范围内的分布均匀化,即在每个灰度级上都具有相同的像素点数,从而获得较好的视觉效果。另外,直方图固有的信息也可用在图像分割等其它图像处理的应用中。

灰度级变换技术可用g(x,y)=T[f(x,y)]的形式表示,其中f(x,y)为输入图像,g(x,y)为输出图像,T是对图像f进行某种处理的操作。由于(x,y)处的g值仅由f在该点处的亮度决定,T也称为一个亮度或灰度级变换函数,它与位置坐标(x,y)无关,所以通常写成如下的简化形式s=T®,其中r和s分别表示图像f和g在相应点(x,y)的亮度。利用灰度变换可调整一幅图像的明暗、对比度等。

三、实验内容

1、编写一个图像灰度直方图统计函数my_imhist,选择一幅图像利用my_imhist显示其直方图,将结果与MATLAB图像处理工具箱中提供的灰度直方图函数imhist的处理结果进行比较,并在同一窗口中显示出来。

(1)源代码

function my_imhist( input)y=zeros(1,256);[row,col]=size(input);n=row*col;for i=1:rowfor j=1:colnum=double(input(i,j))+1;y(num)=y(num)+1;endend    bar(y);%画直方图xlim([0,256]);
endi=imread('C:\Users\Administrator\Pictures\514.jpg');
subplot(2,1,1);
imhist(i);
title('imnhist处理');
subplot(2,1,2);
my_imhist(i);
title('my imhist处理');

(2)实验结果

2、利用以上编写的函数my_imhist或imhist,估算图像iris.tif中瞳孔的半径(以像素为单位)。

(1)源代码

I=imread('C:\Users\Administrator\Pictures\iris.tif');
subplot(3,1,1);
imshow(I);
title('原图像');
subplot(3,1,2);
imhist(I);
title('0到255范围内的直方图');
grid;
subplot(3,1,3);
imhist(I);
title('0到20范围内的直方图');
grid;xlim([0,20]);
[count,x] = imhist(I,256);

(2)实验结果


可以看到瞳孔灰度范围大致分布在0-20,在命令行中输入count,将前20个灰度值的个数相加,结果为4471像素,说明瞳孔面积为4471像素,根据圆形面积公式,可以得出瞳孔半径约为38像素。

3、按照教材68页上的公式(4.1.6)

编程实现图像的分段线性灰度变换.

(1)源代码

I=imread('C:\Users\Administrator\Pictures\bottle.tif');
[m,n]=size(I);
G=zeros(m,n);
a=255/3;
b=a*2;
M=255;
c=a+20;
d=M-c;
for i=1:mfor j=1:nif(I(i,j)>=0&&I(i,j)<a)G(i,j)=(c/a)*I(i,j);elseif(I(i,j)>=a&&I(i,j)<b)G(i,j)=((d-c)/(b-a))*(I(i,j)-a)+c;elseG(i,j)=((M-d)/(M-b))*(I(i,j)-b)+d;endend
endsubplot(2,2,1);imshow(I);title('原图像');subplot(2,2,2);imhist(I);subplot(2,2,3);imshow(uint8(G));title('新图像');  subplot(2,2,4);imhist(uint8(G));

(2)实验结果

4、编写一个灰度图像的直方图均衡化函数(不可使用库函数)。(可使用的灰度等级数量不变即可),并对下图例题进行测试,给出测试结果。

(1)源代码

I=[5 5 4 4 2 0 7;5 5 4 2 0 0 7;4 4 4 2 0 7 7;1 3 3 0 7 7 6;1 0 0 0 7 7 6;7 7 7 7 7 7 6;7 7 7 7 7 7 6];
%获得输入图像尺寸M、N(size函数)
[m,n]=size(I);
%灰度等级为0-7
num=zeros(1,8);
%计算每个灰度等级的个数
for i=1:mfor j=1:nfor k=0:7if(I(i,j)==k)num(k+1)=num(k+1)+1;endendend
end
%计算每个灰度等级的频率
for k=1:8num(k)=num(k)/(m*n);
end
%计算原图灰度的累计分布(使用cumsum函数)计算一个数组的累加值
sumnum=cumsum(num);
%四舍五入函数, 将num四舍五入,得到新旧图像灰度值的映射结果
new=round(sumnum*7);
%形成新矩阵
Inew=zeros(m,n);
for i=1:mfor j=1:nInew(i,j)=new(I(i,j)+1);end
end

(2)实验结果

计算机图像处理实验二 图像直方图及灰度变换相关推荐

  1. OpenCV与图像处理学习二——图像直方图与色彩空间

    OpenCV与图像处理学习二--图像直方图与色彩空间 2.4 图像直方图(Image Histogram) 2.4.1 直方图的绘制 2.4.2 三通道直方图绘制 2.5 颜色空间 2.5.1 RGB ...

  2. 【Python CUDA版】河北工业大学计算机图像处理实验二:图像直方图及灰度变换

    一.实验目的与要求 1.掌握图像灰度直方图的概念及其计算方法,编写灰度直方图统计程序. 2.通过对图像直方图的分析,学习应用直方图法解决诸如图像二值化等具体问题. 3.熟悉直方图均衡化的计算过程及其应 ...

  3. 计算机图像处理实验报告四西南大学,计算机图像处理实验报告(数字图像处理基本操作)...

    西南大学 工程技术学院学生实验报告 课程名称: 计算机图像处理 实验名称: 实验一 数字图像处理基本操作 一.实验目的 (1)掌握MATLAB软件的运用,熟练掌握建立.保存.运行.调试m文件的方法. ...

  4. 图像处理大型科普——图像直方图

    图像处理大型科普--图像直方图 偶尔跟在浙大读研的湖大一姐谈起轮廓识别,她正在做一个能把衣服分类成不同款式的应用,衣服平摊好,然后用手机一扫,马上就能告诉你这是T-SHIRT还是裙子,什么?你敢说这玩 ...

  5. 华为AI认证_图像处理实验(图像预处理)

    实验一:灰度变化 代码: import cv2 import numpy as npdef liner_trans(org,k,b=0):"""灰度变化:param im ...

  6. Win8 Metro(C#)数字图像处理--3.3图像直方图计算

    原文:Win8 Metro(C#)数字图像处理--3.3图像直方图计算 /// <summary>/// Get the array of histrgram./// </summa ...

  7. 计算机组成原理中FZ,计算机组成原理实验二.doc

    计算机组成原理实验二.doc 北京科技大学 计算机与通信工程学院 实 验 报 告 实验名称:?? 基本运算器实验 李奥林 ???? 专 业:??? 计算机科学与技 ? ? 班 级:??? 计1303? ...

  8. 计算机网路实验二 多线程Web服务器的设计与实现

    计算机网路实验二 多线程Web服务器的设计与实现 一. 实验目的及任务 1.实验目的 熟悉简单网络的搭建与基本配置: 熟悉socket.多线程编程: 熟悉JDK编程工具的基本使用: 熟悉HTTP协议: ...

  9. 计算机图形学实验二 《绘制任意斜率的直线》

    计算机图形学实验二 <绘制任意斜率的直线> 视频讲解地址 一.Bresenham算法 用视频讲会好点我之前也录过相关视频可以先凑合看 二.设计CLine类 之前也说了C++一个类是由源文件 ...

最新文章

  1. android ble不配对接收广播数据_蓝牙低功耗(BLE)学习笔记_0
  2. usr libexec java_osx – 如何更改从/ usr/libexec/java_home返回的Mac操作系统的默认Java虚拟机...
  3. mysql-事务隔离级别
  4. 使用MSBuild实现完整daily build流程 .
  5. [转]ELF文件结构简述
  6. 检查一列数据的重复项 vba_提取重复值,但字典不是重点。
  7. jq 组装数组_Jquery 数组操作
  8. Linux Mint Root
  9. mysql5.6找不到int_为什么在mysql 5.6中,在int字段上自动递增跳过“2147483646”?
  10. QML 插件开发 Plugin封装
  11. 【更新】PDF控件Spire.PDF V3.9.463发布 | 修复多个PDF转换bug
  12. python开发酷q插件gui_Python酷Q应用开发
  13. 面试(软件实施工程师)
  14. android x5全屏白色,x5webview 自定义全屏界面(示例代码)
  15. 关于 Android 8.0 gts 的 widevine 类问题 GtsMediaTestCases / GtsExoPlayerTestCases
  16. BOY LONDON 2019秋季 武装集结
  17. pandas category数据类型
  18. 不平凡的2021,末流普本生秋招上岸大厂的历程
  19. ios描述文件的申请
  20. 【CRC笔记】CRC-16 KERMIT C语言实现

热门文章

  1. sql查询每科成绩的最高分_编写SQL语句查询出每个各科班分数最高的同学的名字,班级名称,课程名称,分数...
  2. 一键装机linux_linux系统学习第十八天《搭建一键装机平台》终结篇
  3. 华为 HCIA-Cloud Computing V4.0(基础知识)
  4. pip报错:No module named pip
  5. C语言 mmap函数
  6. tflearn在tensorflow上的安装配置(基于ubuntu)
  7. 关于windows清理C盘问题
  8. CSU2020期中测试模拟题1 问题E:小帅的字符串
  9. JAVA里面继承和接口
  10. 什么是mes?它的功能有哪些?