• Matlab图像直方图相关函数


    图像的灰度直方图(H是图像a.bmp的数据矩阵)

    imhist(H);%显示a的直方图

    histeq(H); %将图像a进行直方图均衡化

    adapthisteq(H); %将图像a进行直方图均衡化

    imhist函数只能处理二维数据,因此处理RGB图像,需先转化成灰度图像,显示灰度直方图。

    例1:显示图像灰度直方图并进行直方图均衡化

    H=rgb2gray(imread('peppers.png'));
    subplot(3,2,1);
    imshow(H);
    title('原图');
    subplot(3,2,2);
    imhist(H);
    title('原图直方图');
    subplot(3,2,3);
    H1=adapthisteq(H);
    imshow(H1);
    title('adapthisteq均衡后图');
    subplot(3,2,4);
    imhist(H1);
    title('adapthisteq均衡后直方图');
    subplot(3,2,5);
    H2=histeq(H);
    imshow(H2);
    title('histeq均衡后图');
    subplot(3,2,6);
    imhist(H1);
    title('histeq均衡后直方图');


    例2: 自己设计程序显示直方图,并实现直方图均衡化。

    直方图均衡化是直方图修正技术的一种。一幅均匀量化的自然图像的灰度直方图通常在低灰度区域的频率较大,这样的图像较暗,区域中的细节常常看不清楚。

    直方图均衡化可使得图像的灰度间距拉大或者使灰度分布均匀,从而增加了反差,使图像细节清晰,达到图像增强的目的。

    x=rgb2gray(imread('peppers.png'));
    [m,n]=size(x);
    p=zeros(1,256);
    for i=0:255
       p(i+1)=length(find(x==i))/(m*n);
    end
    subplot(2,2,1);
    bar(0:255,p,'b');
    title('原图直方图');
    subplot(2,2,2);
    imshow(x);
    title('原图');
     
    s=zeros(1,256);
    for i=1:256
         for j=1:i
             s(i)=p(j)+s(i);                
         end
    end
     
    a=round(s*255);
    for i=0:255
        GPeq(i+1)=sum(p(find(a==i)));          
    end
    subplot(2,2,3);
    bar(0:255,GPeq,'b')                 
    title('均衡化后的直方图');
    b=x;
    for i=0:255
         b(find(x==i))=a(i+1);              
    end
    subplot(2,2,4);
    imshow(b)                          
    title('均衡化后图像');
  • 相关阅读:
    docker容器跑tomcat遇到的坑
    PCL 编程多个点云合成
    PCL 常用小知识
    PCL点云库中的坐标系(CoordinateSystem)
    Ubuntu14.04(64位)下gcc-linaro-arm-linux-gnueabihf交叉编译环境搭建
    Windows cmd 快捷操作
    #Pragma Pack与内存分配
    线段上的整数点个数
    基于PCL绘制模型并渲染
    rosbag数据记录及转换图片、视频
  • 原文地址:https://www.cnblogs.com/riasky/p/3507461.html
Copyright © 2020-2023  润新知