数字图像的增强处理4.docx
文本预览下载声明
数字图像的增强处理实验目的与要求掌握灰度直方图的概念及其计算方法;熟练掌握直方图规定化的计算过程;利用MATLAB程序进行图像增强。实验设备及软件PC计算机MATLAB软件/语言包括图像处理工具箱(Image Processing Toolbox) 实验所需要的图片实验内容算法步骤第7步实现原理A、原理1:单映射规则(SML)原始图像的每个灰度级数i的灰度累计分布函数norIhist(i)与模板图像灰度级数灰度累计分布函数值norMhist(i)作差值后取绝对值运算;比较运算得到的结果,差值绝对值的最小值对应的最小位置便是原始图像映射到模板图像的灰度值。示例:灰度为0的灰度级单映射,分别用其原始累计分布函数直方图0.19与模板的累计分布函数直方图作差,发现差的绝对值的最小值在模板图像灰度级的3、4灰度级处,取最小位置处为3,故原始图像灰度级为0的位置单映射后的灰度值为3,其余灰度级同理B、原理2:组映射规则(GML)与单映射相反,组映射是用模板图像中每个灰度级的累计分布函数(灰度直方图概率密度为0的灰度级除外)依次与原始图像的所有累计分布函数值作差;在所有差值中找出绝对值最小值所对应的原始图像灰度级,将该灰度级与上一次映射灰度级之间的原始图像灰度级都映射为模板图像中与之差值绝对值最小的灰度级。示例:从模板图像灰度级数为3的位置开始运算映射(因为规定化处理后的结果要和规定图像一致,而规定图像的前3个是0,就不进行映像了),即用0.2分别与原始图像的累计分布函数直方图作差,发现在0.19处有绝对值最小值,于是就将原始图像灰度值为0映射为3,下一步则接着从灰度级为5的位置开始映射,即0.8分别与原始图像的累积分布直方图作差,发现在0.81出有最小值,对应原始图像中灰度级数为3的位置,于是原始图像中灰度级1~3都映射为5。其余同理。算法步骤读入原始图像,统计其直方图;读入规定图像,统计其直方图;计算原始图像和规定图像的累积直方图通过映射关系确定原始图像灰度级映射到规定图像的灰度级;将原始图像灰度级映射到规定图像的灰度级;输出实验代码%单映射规则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(chang.png);% 读入标准图 %standard = rgb2gray(standard); [m_s,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_valuesum(standard_hist(1:i))]; % orgin_value = [orgin_valuesum(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);fori = 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 % value{i} = startdard_value - orgin_value(i); % value{i} = abs(value{i}); % [tem
显示全部