数字图像处理实验报告--直方图规定化
数字图像处理实验报告实验名称:直方图规定化姓名:班级:学号:专业:电子信息工程(2+2)指导教师:陈华华实验日期:2012 年 5 月 24 日直 方 图 匹 配 ( 规 定 化 ) 直 方 图 均 衡 化 能 够 自 动 增 强 整 个 图 像 的 对 比 度 , 但 它 的 具 体 增 强 效 果 不容 易 控 制 , 处 理 的 结 果 总 是 得 到 全 局 均 匀 化 的 直 方 图 。 实 际 上 有 时 需 要 变 换直 方 图 , 使 之 成 为 某 个 特 定 的 形 状 , 从 而 有 选 择 地 增 强 某 个 灰 度 值 范 围 内 的对 比 度 。 这 时 可 以 采 用 比 较 灵 活 的 直 方 图 规 定 化 。 一 般 来 说 正 确 地 选 择 规定 化 的 函 数 可 以 获 得 比 直 方 图 均 衡 化 更 好 的 效 果 。 所 谓 直 方 图 规 定 化 , 就 是 通 过 一 个 灰 度 映 像 函 数 , 将 原 灰 度 直 方 图 改 造成 所 希 望 的 直 方 图 。 所 以 , 直 方 图 修 正 的 关 键 就 是 灰 度 映 像 函 数 。 直 方 图 匹 配 方 法 主 要 有 3 个 步 骤 ( 这 里 设 M 和 N 分 别 为 原 始 图 和 规 定图 中 的 灰 度 级 数 , 且 只 考 虑 N M 的 情 况 ) : (1) 如 同 均 衡 化 方 法 中 , 对 原 始 图 的 直 方 图 进 行 灰 度 均 衡 化 : (2) 规 定 需 要 的 直 方 图 , 并 计 算 能 使 规 定 的 直 方 图 均 衡 化 的 变 换 : (3) 将 第 1 个 步 骤 得 到 的 变 换 反 转 过 来 , 即 将 原 始 直 方 图 对 应 映 射 到 规定 的 直 方 图 , 也 就 是 将 所 有 pf(fi)对 应 到 pu(uj)去 。一、A 图直方图规定 B 图Matlab 程序:%直方图规定化clear allA=imread('C:UsershpDesktopA.tif'); %读入 A 图像imshow(A) %显示出来 title('输入的 A 图像')%绘制直方图m,n=size(A); %测量图像尺寸B=zeros(1,256); %预创建存放灰度出现概率的向量for k=0:255B(k+1)=length(find(A=k)/(m*n); %计算每级灰度出现的概率,将其存入 B 中相应位置endfigure,bar(0:255,B,'g'); %绘制直方图title('A 图像直方图')xlabel('灰度值')ylabel('出现概率')axis(0,260,0,0.015)C=imread('C:UsershpDesktopB.tif');%读入 B 图像imshow(C) %显示出来 title('输入的 B 图像')%绘制直方图m,n=size(C); %测量图像尺寸D=zeros(1,256); %预创建存放灰度出现概率的向量for k=0:255D(k+1)=length(find(C=k)/(m*n); %计算每级灰度出现的概率,将其存入 D 中相应位置endfigure,bar(0:255,D,'g'); %绘制直方图title('B 图像直方图')xlabel('灰度值')ylabel('出现概率')axis(0,260,0,0.015)S1=zeros(1,256);for i=1:256for j=1:iS1(i)=D(j)+S1(i); %计算 B 灰度图累计直方图endendcounts=Bfigure,bar(0:255,counts,'r')title('A 图像直方图 ')S2=zeros(1,256);for i=1:256for j=1:iS2(i)=counts(j)+S2(i); endend; %"累计"规定化直方图 %对比直方图,找到相差最小的灰度级for i=1:256for j=1:255if S1(j)=S2(i) if abs(S1(j)-S2(i)0for k=(T(i-1)+1):T(i)H(i)=H(i)+D(k);endelse H(i)=0;end endfigure,bar(0:255,H,'g') %显示规定化后的直方图title('A 规定 B 后的直方图')xlabel('灰度值')ylabel('出现概率')axis(0,260,0,0.6)%显示规定图PA=C; %将各个像素归一化后的灰度值赋给这个像素for i=1:mfor j=1:nfor k=2:255if T(k-1)=S2(i) if abs(S1(j)-S2(i)0for k=(T(i-1)+1):T(i)H(i)=H(i)+B(k);endelse H(i)=0;endendfigure,bar(0:255,H,'g') %显示规定化后的直方图title('规定化后的直方图')xlabel('灰度值')ylabel('出现概率')axis(0,260,0,0.6)%显示规定图PA=A; %将各个像素归一化后的灰度值赋给这个像素for i=1:mfor j=1:nfor k=2:256if T(k-1)<=A(i,j)&A(i,j)<=T(k)PA(i,j)=k;break;endendendendfigure,imshow(PA) %显示规定化后的图像 title('规定化后图像')imwrite(PA,'guidinghua.bmp');