2018-10-17 回答
直方图均衡化也是非线性量化的一种吧,网上找到的,作者写的非常详细。 % 数字图像处理程序作业 % 本程序能将jpg格式的彩色图像文件灰度化并进行直方图均衡 % % 输入文件:picsample.jpg 待处理图像 % 输出文件:picsamplegray.bmp 灰度化后图像 % picequal.bmp 均衡化后图像 % % 输出图形窗口说明 % figure no 1 待处理彩色图像 % figure no 2 灰度化后图像 % figure no 3 直方图 % figure no 4 均衡化后直方图 % figure no 5 灰度变化曲线 % figure no 6 均衡化后图像 % 1, 处理的图片名字要为 picsample.jpg % 2, 程序每次运行时会先清空workspace % 作者;archiless lorder clear all %一,图像的预处理,读入彩色图像将其灰度化 ps=imread('picsample.jpg'); %读入jpg彩色图像文件 imshow(ps) %显示出来 figure no 1 title('输入的彩色jpg图像') imwrite(rgb2gray...直方图均衡化也是非线性量化的一种吧,网上找到的,作者写的非常详细。 % 数字图像处理程序作业 % 本程序能将jpg格式的彩色图像文件灰度化并进行直方图均衡 % % 输入文件:picsample.jpg 待处理图像 % 输出文件:picsamplegray.bmp 灰度化后图像 % picequal.bmp 均衡化后图像 % % 输出图形窗口说明 % figure no 1 待处理彩色图像 % figure no 2 灰度化后图像 % figure no 3 直方图 % figure no 4 均衡化后直方图 % figure no 5 灰度变化曲线 % figure no 6 均衡化后图像 % 1, 处理的图片名字要为 picsample.jpg % 2, 程序每次运行时会先清空workspace % 作者;archiless lorder clear all %一,图像的预处理,读入彩色图像将其灰度化 ps=imread('picsample.jpg'); %读入jpg彩色图像文件 imshow(ps) %显示出来 figure no 1 title('输入的彩色jpg图像') imwrite(rgb2gray(ps),'picsamplegray.bmp'); %将彩色图片灰度化并保存 ps=rgb2gray(ps); %灰度化后的数据存入数组 figure,imshow(ps) %显示灰度化后的图像,也是均衡化前的样品 figure no 2 title('灰度化后的图像') %二,绘制直方图 [m,n]=size(ps); %测量图像尺寸参数 gp=zeros(1,256); %预创建存放灰度出现概率的向量 for k=0:255 gp(k+1)=length(find(ps==k))/(m*n); %计算每级灰度出现的概率,将其存入gp中相应位置 end figure,bar(0:255,gp,'g') %绘制直方图 figure no 3 title('原图像直方图') xlabel('灰度值') ylabel('出现概率') %三,直方图均衡化 s1=zeros(1,256); for i=1:256 for j=1:i s1(i)=gp(j)+s1(i); %计算sk end end s2=round(s1*256); %将sk归到相近级的灰度 for i=1:256 gpeq(i)=sum(gp(find(s2==i))); %计算现有每个灰度级出现的概率 end figure,bar(0:255,gpeq,'b') %显示均衡化后的直方图 figure no 4 title('均衡化后的直方图') xlabel('灰度值') ylabel('出现概率') figure,plot(0:255,s2,'r') %显示灰度变化曲线 figure no 5 legend('灰度变化曲线') xlabel('原图像灰度级') ylabel('均衡化后灰度级') %四,图像均衡化 pa=ps; for i=0:255 pa(find(ps==i))=s2(i+1); %将各个像素归一化后的灰度值赋给这个像素 end figure,imshow(pa) %显示均衡化后的图像 figure no 6 title('均衡化后图像') imwrite(pa,'picequal.bmp');