码迷,mamicode.com
首页 > 其他好文 > 详细

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

时间:2015-05-12 11:26:05      阅读:196      评论:0      收藏:0      [点我收藏+]

标签: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)


效果:

技术分享


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

标签:matlab   直方图   数字图像处理   直方图均衡化   灰度   

原文地址:http://blog.csdn.net/u012422829/article/details/45666391

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!