数字图像的增强处理4

上传人:ji****72 文档编号:35483330 上传时间:2018-03-16 格式:DOCX 页数:11 大小:897.10KB
返回 下载 相关 举报
数字图像的增强处理4_第1页
第1页 / 共11页
数字图像的增强处理4_第2页
第2页 / 共11页
数字图像的增强处理4_第3页
第3页 / 共11页
数字图像的增强处理4_第4页
第4页 / 共11页
数字图像的增强处理4_第5页
第5页 / 共11页
点击查看更多>>
资源描述

《数字图像的增强处理4》由会员分享,可在线阅读,更多相关《数字图像的增强处理4(11页珍藏版)》请在金锄头文库上搜索。

1、数字图像的增强处理数字图像的增强处理一、一、实验目的与要求实验目的与要求1、 掌握灰度直方图的概念及其计算方法;掌握灰度直方图的概念及其计算方法;2、 熟练掌握直方图规定化的计算过程;熟练掌握直方图规定化的计算过程;3、 利用利用 MATLAB 程序进行图像增强。程序进行图像增强。二、二、实验设备及软件实验设备及软件1、 PC 计算机计算机2、 MATLAB 软件软件/语言包括图像处理工具箱语言包括图像处理工具箱(Image Processing Toolbox) 3、 实验所需要的图片实验所需要的图片三、三、实验内容实验内容1、 算法步骤算法步骤2、 第第 7 步实现原理步实现原理A、原理、

2、原理 1:单映射规则:单映射规则(SML)原始图像的每个灰度级数原始图像的每个灰度级数 i 的灰度累计分布函数的灰度累计分布函数 norIhist(i)与模板图像灰度级数灰度累与模板图像灰度级数灰度累 计分布函数值计分布函数值 norMhist(i)作差值后取绝对值运算;比较运算得到的结果,差值绝对值的最作差值后取绝对值运算;比较运算得到的结果,差值绝对值的最 小值对应的最小位置便是原始图像映射到模板图像的灰度值。小值对应的最小位置便是原始图像映射到模板图像的灰度值。示例:示例:灰度为灰度为 0 的灰度级单映射,分别用其原始累计分布函数直方图的灰度级单映射,分别用其原始累计分布函数直方图 0.

3、19 与模板的累计分与模板的累计分 布函数直方图作差,发现差的绝对值的最小值在模板图像灰度级的布函数直方图作差,发现差的绝对值的最小值在模板图像灰度级的 3、4 灰度级处,取最小灰度级处,取最小位置处为位置处为 3,故原始图像灰度级为,故原始图像灰度级为 0 的位置单映射后的灰度值为的位置单映射后的灰度值为 3,其余灰度级同理,其余灰度级同理B、原理、原理 2:组映射规则:组映射规则(GML)与单映射相反,组映射是用模板图像中每个灰度级的累计分布函数(灰度直方图概率与单映射相反,组映射是用模板图像中每个灰度级的累计分布函数(灰度直方图概率 密度为密度为 0 的灰度级除外)依次与原始图像的所有累

4、计分布函数值作差;在所有差值中找出的灰度级除外)依次与原始图像的所有累计分布函数值作差;在所有差值中找出 绝对值最小值所对应的原始图像灰度级,将该灰度级与上一次映射灰度级之间的原始图像绝对值最小值所对应的原始图像灰度级,将该灰度级与上一次映射灰度级之间的原始图像 灰度级都映射为模板图像中与之差值绝对值最小的灰度级。灰度级都映射为模板图像中与之差值绝对值最小的灰度级。示例:从模板图像灰度级数为示例:从模板图像灰度级数为 3 的位置开始运算映射(因为规定化处理后的结果要和的位置开始运算映射(因为规定化处理后的结果要和 规定图像一致,而规定图像的前规定图像一致,而规定图像的前 3 个是个是 0,就不

5、进行映像了),就不进行映像了) ,即用,即用 0.2 分别与原始图像的分别与原始图像的 累计分布函数直方图作差,发现在累计分布函数直方图作差,发现在 0.19 处有绝对值最小值,于是就将原始图像灰度值为处有绝对值最小值,于是就将原始图像灰度值为 0 映射为映射为 3,下一步则接着从灰度级为,下一步则接着从灰度级为 5 的位置开始映射,即的位置开始映射,即 0.8 分别与原始图像的累积分布分别与原始图像的累积分布 直方图作差,发现在直方图作差,发现在 0.81 出有最小值,对应原始图像中灰度级数为出有最小值,对应原始图像中灰度级数为 3 的位置,于是原始图的位置,于是原始图 像中灰度级像中灰度级

6、 13 都映射为都映射为 5。其余同理。其余同理。3、 算法步骤算法步骤A.读入原始图像,统计其直方图;读入原始图像,统计其直方图;B.读入规定图像,统计其直方图;读入规定图像,统计其直方图;C.计算原始图像和规定图像的累积直方图计算原始图像和规定图像的累积直方图D.通过映射关系确定原始图像灰度级映射到规定图像的灰度级;通过映射关系确定原始图像灰度级映射到规定图像的灰度级;E.将原始图像灰度级映射到规定图像的灰度级;将原始图像灰度级映射到规定图像的灰度级;F.输出输出四、四、实验代码实验代码%单映射规则clc;close all;clear orgin = imread(zhanglala.b

7、mp); %读入原图像 orgin = rgb2gray(orgin); m_o,n_o = size(orgin); orgin_hist = imhist(orgin)/(m_o*n_o); %imhist 结果是每级灰度的个数,因此需除图像大小得到每级灰度的分布standard = imread(chang.png);% 读入标准图 %standard = rgb2gray(standard); m_s,n_s = size(standard); standard_hist=imhist(standard)/(m_s*n_s); %imhist 结果是每级灰度的个数,因此需除图像大小得到

8、每级灰度的分布 % 法 1:采用 Matlab 矩阵扩展的方法得到图像累积直方分布% orgin_value = ; % 原图像累积直方分布 % startdard_value = ; % 标准图累积直方分布 % for i = 1 : 256 %采用 Matlab 矩阵扩展的方法得到% startdard_value = startdard_value sum(standard_hist(1:i); % orgin_value = orgin_value sum(orgin_hist(1:i); % end % 法 2:采用累积直方分布定义来实现orgin_value = zeros(1,

9、256);startdard_value = zeros(1, 256);orgin_value(1) = orgin_hist(1);startdard_value(1) = standard_hist(1);for i = 2 : 256orgin_value(i) = orgin_value(i - 1) + orgin_hist(i);startdard_value(i) = startdard_value(i - 1) + standard_hist(i);end%此处是单映射规则的核心代码,采用 Matlab 的矩阵处理方法实现% for i = 1:256 % valuei =

10、startdard_value - orgin_value(i); % valuei = abs(valuei); % temp index(i) = min(valuei); % end%此处是单映射规则的核心代码,采用一般程序设计实现index = zeros(1, 256);for i = 1 : 256 %取原始图像当前累积灰度分布value = zeros(1, 256);for j = 1 : 256 %依次减标准图像每个灰度级的累积灰度分布,并求绝对值 value(j) = abs(orgin_value(i) - startdard_value(j);endminv = val

11、ue(1); C = 1; %找取得最小 for j = 2 : 256if value(j) minvC = j;minv = value(j);endendindex(i) = C; %映射关系为 i 映射到 Cendnewimg = zeros(m_o,n_o);for i = 1 : m_o for j = 1 : n_o %orgin(i,j) + 1:原始图像的灰度级是 0255,而处理的灰度级是 1256,因此需要+1,newimg(i,j) = index(orgin(i,j) + 1) - 1; %index(orgin(i,j) + 1) - 1:映射 index 的灰度级

12、是 1256,而图像的灰度级是 0255,因此-1,end end newimg = uint8(newimg); subplot(2,3,1);imshow(orgin);title(原图); subplot(2,3,2);imshow(standard);title(标准图); subplot(2,3,3);imshow(newimg);title(myself 匹配到标准图); subplot(2,3,4);imhist(orgin); title(原图); subplot(2,3,5);imhist(standard); title(标准图); subplot(2,3,6);imhis

13、t(newimg); title(myself 匹配到标准图);-%组映射规则clc;close all;clearorgin = imread(zhanglala.bmp); %读入原图像 orgin=rgb2gray(orgin); m_o,n_o = size(orgin); orgin_hist = imhist(orgin)/(m_o*n_o); %imhist 结果是每级灰度的个数,因此需除图像大小得到每级灰度的分布standard = imread(cktboard.tif);% 读入标准图 chang.png% standard=rgb2gray(standard); m_s,

14、n_s = size(standard); standard_hist = imhist(standard)/(m_s*n_s); %imhist 结果是每级灰度的个数,因此需除图像大小得到每级灰度的分布 % 法 1:采用 Matlab 矩阵扩展的方法得到图像累积直方分布% orgin_value = ; % 原图像累积直方分布 % startdard_value = ; % 标准图累积直方分布 % for i = 1 : 256 %采用 Matlab 矩阵扩展的方法得到% startdard_value = startdard_value sum(standard_hist(1:i); %

15、orgin_value = orgin_value sum(orgin_hist(1:i); % end % 法 2:采用累积直方分布定义来实现orgin_value = zeros(1, 256);startdard_value = zeros(1, 256);orgin_value(1) = orgin_hist(1);startdard_value(1) = standard_hist(1);for i = 2 : 256orgin_value(i) = orgin_value(i - 1) + orgin_hist(i);startdard_value(i) = startdard_value(i - 1) + standard_hist(i);end%组映射的核心程序newimg = zeros(m_o,n_o);index =

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号