MATLAB 直方图,线性变换,直方图均衡化

1.给定图像输出直方图

img = imread('E:\matlab\work\1.jpg');     p=rgb2gray(img);    %转为灰度图像 imhist(p);

效果:



2.给定一个线性变换函数,实现图像的灰度拉伸

  I = imread('E:\matlab\work\lenna.bmp') I2=I.*2-50  %做线性变换  imshow(I2); %显示经过线性变换后的图像 


3.实现对图像的均衡化

I = imread('E:\matlab\work\lenna.bmp');   [height,width] = size(I);   figure   subplot(221)   imshow(I)%显示原始图像   subplot(222)   imhist(I)%显示原始图像直方图      %进行像素灰度统计;   s = zeros(1,256);%统计各灰度数目,共256个灰度级   for i = 1:height       for j = 1: width           s(I(i,j) + 1) = s(I(i,j) + 1) + 1;%对应灰度值像素点数量增加一       end   end   %计算灰度分布密度   p = zeros(1,256);   for i = 1:256       p(i) = s(i) / (height * width * 1.0);   end   %计算累计直方图分布   c = zeros(1,256);   c(1) = p(1); for i = 2:256            c(i) = c(i - 1) + p(i);   end   %累计分布取整,将其数值归一化为1~256  c = uint8(255 .* c + 0.5);   %对图像进行均衡化 for i = 1:height       for j = 1: width           I(i,j) = c(I(i,j)+1);       end   end   subplot(223)   imshow(I)%显示均衡化后的图像 subplot(224)   imhist(I)%显显示均衡化后的图像的直方图  

或者可以直接用matlab的函数 histeq(I,256)


效果:



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章