精华内容
下载资源
问答
  • 灰度直方图,利用matlab实现图像的直方图均衡化
  • matlab 灰度图像直方图均衡化
  • 直方图均衡化的作用是图像增强。 原理 参考这篇文章 实验步骤 实现代码 function [J] = imhisteq(I) [M,N,C]=size(I); %获得输入图像尺寸M、N、C(size函数) I0 = double(I);%矩阵F中的数据由uint8类型转换为...

    作用

    直方图均衡化的作用是图像增强。

    原理

    参考这篇文章


    实验步骤

    在这里插入图片描述

    实现代码

    function [J] = imhisteq(I) 
    [M,N,C]=size(I);  %获得输入图像尺寸MNC(size函数)
    
    I0 = double(I);%矩阵F中的数据由uint8类型转换为double类型以便后续处理。
    
    if(C>1)
        I=rgb2gray(I); %如果颜色通道数C>1,则将彩色图像转化为灰度图rgb2gray
    end
    
    %计算图像F的灰度直方图h(imhist函数)
    %或者通过两重循环遍历每个像素点从而得到每个灰度值的累计像素点个数)。
    h = imhist(I,256)';
    
    %计算原图的灰度分布概率Pf =h/(M*N)    (i=0,1,,255)。
    Pf = h/(M*N);
    
    %计算原图灰度的累计分布Pa(使用cumsum函数)
    Pa = cumsum(Pf);
    
    %令Pa(1)=0
    Pa(1)=0;
    
    %Pa_1= Pa *255。将Pa_1四舍五入.
    Pa_1 = round(Pa*255);
    
    %置两重循环遍历图像F中所有像素点,求出每一个像素点的灰度值F(i,j)
    for i=1:M
        for j=1:N
            J(i,j) = Pa_1(I0(i,j)+1);
        end
    end
    
    %计算得到的新图像矩阵中所有点的灰度值由double转换为uint8
    J = uint8(J);  %转换uint8编码
    
    

    测试

    F  = imread('');/*灰度图路径自己指定*/
    [G]=imhisteq(F);
    figure,imshow(G);
    

    效果

    在这里插入图片描述

    展开全文
  • """对一幅灰度图像进行直方图均衡化""" #计算图像的直方图 #在numpy中,也提供了一个计算直方图的函数histogram(),第一个返回的是直方图的统计量,第二个为每个bins的中间值 imhist,bins = histogram(im.flatten...
  • Matlab实现图像灰度图,绘制直方图,直方图均衡化

    万次阅读 多人点赞 2019-06-24 20:22:13
    1.imread() MATLAB中图像读取函数与OpenCV一样是imread,可以打开指定路径图片,其路径表示方式与OpenCV中有些许不同如: srcImage=imread('E:\MatlabWorkSpace\实验一\实验一图一....2.将打开的图像转换为灰度图r...

    1.imread()

    MATLAB中图像读取函数与OpenCV一样是imread,可以打开指定路径图片,其路径表示方式与OpenCV中有些许不同如:

    srcImage=imread('E:\MatlabWorkSpace\实验一\实验一图一.png');

    路径符号为单"\",Opencv为双"\",其函数原型为:

    A=imread(filename,fmt);



    2.将打开的图像转换为灰度图rgb2gray

    grayImage=rgb2gray(srcImage);


    3.imwrite

    保存图片,一定要注明图片格式如jpg,bmp,png等。原型如下:

    imwrite(A,filename,fmt);

    保存图片时可指定图片保存路径。如

    imwrite(grayImage,'E:\MatlabWorkSpace\实验一\grayImage.jpg');


    4.imhist

    绘制图像直方图函数,直方图绘制后可直接显示,不需要用imshow进行显示。如:

    imhist(grayImage);


    5.imfinfo

    读取图片信息包括Height、Width、Format、ColorType等信息,可利用此函数判断函数为彩图还是灰度图.如:

    info=imfinfo('E:\MatlabWorkSpace\实验一\grayImage.jpg');

    ***此处貌似必须先将要读取的图片保存下来,之后指定图像所在路径,初学没发现其他方法,欢迎指正。


    6.subplot

    将图片放到一个窗口,需指定三个参数,原型如下:

    subplot(m n p)

    m、n、p分别代表该窗口中图像排列的行数、列数以及第几幅图片

    可结合title使用


    7.adapthisteq()

    图像直方图均衡化

    H1=adapthisteq(grayImage);

    8.imadjust()

    该函数用于调节灰度图像的亮度或彩色图像的颜色矩阵。用法如下:

    J=imadjust(I);

    将灰度图像I中的亮度值映射到J中的新值,使得图像中1%的数据饱和至最低和最高亮度,这可以增加输出图像J对比度值,此用法相当于imadjust(I,stretchlim(I))


    J=imadjust(I,[low_in,hing_in],[low_out,high_out])

    将图像I中的亮度值映射到J中的新值即将low_in至high_in之间的值映射到low_out至high_out之间的值.low_in以下与high_in以上的值被剪切掉了,也就是说low_in以下的值映射到low_out,high_in以上的值映射到high_out。它们都可以使用空的矩阵[],默认值是[0 1]

    low_in、high_in、low_out、high_out的值均在0~1之间,可由已知值除以255算出值。例如low_in为100则,该位置应为:100/255=0.392

    J=imadjust(I,[low_in,hing_in],[low_out,high_out],gamma)

    其中gamma指定描述值I和J关系的曲线形状。如果gamma小于1,此映射偏重更高数值(明亮)输出,如果gamma大于1,此映射偏重更低数(灰暗)输出,如果省略此参数,默认为(线性映射).如图




    示例代码:

    %加载第一幅图像对其进行处理
    srcImage=imread('E:\MatlabWorkSpace\实验一\实验一图一.png');
    

    %转化成灰度图
    grayImage=rgb2gray(srcImage);
    imwrite(grayImage,‘E:\MatlabWorkSpace\实验一\grayImage.jpg’);
    info=imfinfo(‘E:\MatlabWorkSpace\实验一\grayImage.jpg’);
    %[M,N]=size(grayImage);

    %在窗口中显示2*2排列图像
    subplot(2,3,1);
    imshow(grayImage);
    title(‘原图像灰度图’);

    %绘制灰度直方图
    subplot(2,3,2);
    imhist(grayImage);
    title(‘灰度直方图’);
    %[M,N]=size(hist);

    %对灰度直方图均衡化处理
    subplot(2,3,3);
    H1=adapthisteq(grayImage);
    imhist(H1);
    title(‘直方图均衡化’);

    %调整图像灰度等级
    %原图像灰度集中10~120,调整到100~200
    dstImage=imadjust(grayImage,[0.039,0.470],[0.392,0.784],0.6);
    subplot(2,3,4);
    imshow(dstImage);%显式调整后图像
    title(‘灰度级调整后’);
    subplot(2,3,5);
    imhist(dstImage);
    title(‘灰度调整后直方图’);


    运行结果如图所示:



    
    展开全文
  • matlab灰度直方图均衡化及其实现

    千次阅读 2021-01-07 19:19:35
    直方图均衡化的目的就是将直方图的灰度级概率分布变换为均匀分布。(如下图所。注意,p(x)是概率密度函数,P(x)是概率分布函数) 由于直方图中概率较小的灰度级合并为更少的几个或一个灰度级内,从而降低了图像的...

    直方图均衡化

    定义

    当直方图中像素值集中在狭窄的灰度级范围内或分布极不均匀时,图像呈现较差的对比度。直方图均衡化的目的就是将直方图的灰度级概率分布变换为均匀分布。(如下图所。注意,p(x)是概率密度函数,P(x)是概率分布函数)

    由于直方图中概率较小的灰度级合并为更少的几个或一个灰度级内,从而降低了图像的灰度级分辨率,且某些细节信息处于概率较小的灰度级中,这样的灰度级归并到其他灰度级内,从而造成图像细节信息的丢失。

     

    公式

    输入r,输出s
    s = T ( r ) = ( L − 1 ) ∑ j = 0 k P ( r j ) = L − 1 M N ∑ j = 0 k n j , ( k = 0 , 1... L − 1 ) s=T(r)=(L-1)\sum_{j=0}^k{P(r_j)}=\frac{L-1}{MN}\sum_{j=0}^kn_j ,(k=0,1...L-1) s=T(r)=(L−1)j=0∑k​P(rj​)=MNL−1​j=0∑k​nj​,(k=0,1...L−1)

    对于输入图像中每个具有r值的像素值产生一个输出灰度值s.

    略微证明

    先 定 义 两 个 函 数 s = T ( r ) , r = T − 1 ( s ) 。 两 个 互 为 反 函 数 先定义两个函数s=T(r),r=T^{-1}(s)。 两个互为反函数 先定义两个函数s=T(r),r=T−1(s)。两个互为反函数
    接下来,F(x)是概率分布函数,P(x)概率分布。
    F s ( s ) = P r ( S < s ) = P r ( T ( R ) < s ) = P r ( R < T − 1 ( s ) ) = P r ( R < r ) = F r ( r ) F_{s}(s)=P_{r}(S<s)=P_{r}(T(R)<s)=P_{r}(R<T^{-1}(s))=P_{r}(R<r)=F_{r}(r) Fs​(s)=Pr​(S<s)=Pr​(T(R)<s)=Pr​(R<T−1(s))=Pr​(R<r)=Fr​(r)

    接下来对上式两边求导s(概率分布函数的导数是概率密度函数),可得如下
    p s ( s ) = p r ( r ) d r d s p_{s}(s)=p_{r}(r)\frac{dr}{ds} ps​(s)=pr​(r)dsdr​
    当直方图均衡化的变换函数T( r )是连续型随机变量R的概率分布函数Fr( r),也就是输入灰度级r的累计直方图时,可表示为
    s = F r ( r ) = ∫ 0 r p r ( x ) d x , s=F_{r}(r)=\int_{0}^{r}p_r(x)dx, s=Fr​(r)=∫0r​pr​(x)dx,
    对上面两边求导r,得到
    d s d r = p r ( r ) \frac{ds}{dr}=p_{r}(r) drds​=pr​(r)

    将这个式子带入当初求的哪个,得到
    p s ( s ) = 1 p_{s}(s)=1 ps​(s)=1
    这说明什么??

    当直方图均衡化的变换函数T( r)是连续型随机变量R的概率分布函数Fr( r),也就是输入灰度级r的累计直方图时,变换后的概率密度函数是均匀分布的!!!

    所以
    s = T ( r ) = ( L − 1 ) ∑ j = 0 k P ( r j ) = L − 1 M N ∑ j = 0 k n j , ( k = 0 , 1... L − 1 ) s=T(r)=(L-1)\sum_{j=0}^k{P(r_j)}=\frac{L-1}{MN}\sum_{j=0}^kn_j ,(k=0,1...L-1) s=T(r)=(L−1)j=0∑k​P(rj​)=MNL−1​j=0∑k​nj​,(k=0,1...L−1)

    计算步骤

    1. 计算 P ( r k ) = n k M N ( k = 0 , 1 , 2 , 3... L − 1 ) P(r_k)=\frac{n_k}{MN}(k=0,1,2,3...L-1) P(rk​)=MNnk​​(k=0,1,2,3...L−1)
      其中nk是出现的次数。L是离散灰度级数
    2. 计算 s k = ( L − 1 ) ∑ j = 0 k P ( r j ) , ( K = 0 , 1 , . . . L − 1 ) 四 舍 五 入 为 整 数 s_k=(L-1)\sum_{j=0}^kP(r_j),(K=0,1,...L-1) 四舍五入为整数 sk​=(L−1)j=0∑k​P(rj​),(K=0,1,...L−1)四舍五入为整数
    3. 确定 r k 与 s k 的 对 应 关 系 r_k与s_k的对应关系 rk​与sk​的对应关系
    4. 确定概率分布

    MATLAB实现

    i=imread('d:\\cat.jpg');
    i=rgb2gray(i);//rgb转化为灰度图
    j=histeq(i);//灰度直方图均衡化
    figure('name','contrast');
    subplot(1,2,1);imshow(i);title('raw pic');
    subplot(1,2,2);imshow(j);title('process pic');
    
    • 1在这里插入图片描述

     

    展开全文
  • 主要实现了彩色图像到灰度图像的转化,然后根据灰度图像进行直方图均衡化,用MATLAB 编写的,简单易懂。
  • 实现灰度图像的直方图均衡化算法 实验过程 读入一幅灰度图像,存放在图像矩阵F中。(imread函数)。 获得输入图像尺寸M、N、C(size函数)。并将图像矩阵F中的数据由uint8类型转换为double类型以便后续处理。如果...

    实验内容

    实现灰度图像的直方图均衡化算法

    实验过程

    1. 读入一幅灰度图像,存放在图像矩阵F中。(imread函数)。
    2. 获得输入图像尺寸M、N、C(size函数)。并将图像矩阵F中的数据由uint8类型转换为double类型以便后续处理。如果颜色通道数C>1,则将彩色图像转化为灰度图rgb2gray
    3. 计算图像F的灰度直方图h(imhist函数;或者通过两重循环遍历每个像素点从而得到每个灰度值的累计像素点个数)。
    4. 计算计算原图的灰度分布概率hs。hs=h/(M*N) (i=0,1,…,255)。
    5. 计算原图灰度的累计分布hp0(使用cumsum函数)。
    6. hp1=hp0*255。
    7. 将hp1四舍五入,令hp1(1)=0。
    8. 根据步骤(6)得到的新旧图像灰度值的映射结果,设置两重循环遍历图像F中所有像素点,求出每一个像素点的灰度值F(i,j),计算F(i,j)对应数组hp1中的位置x,得到hp1(x)并赋给新图像的对应像素值G(i,j)
    9. 将计算得到的新图像矩阵中所有点的灰度值由double转换为uint8。输出最终得到的结果图像。

    测试代码

    F  = imread('.\im\pict1.png');
    [G]=imhisteq(F);
    figure,imshow(G);
    

    实验所需图片

    链接:https://pan.baidu.com/s/1LaxnZdLeY3LnKKv276E0pA
    提取码:vk8y

    实验源码

    function [J] = imhisteq(I) 
    [height,width,d]=size(I);  %获得输入图像尺寸M、N、C(size函数)
    if(d>1)
        I=rgb2gray(I); %如果颜色通道数C>1,则将彩色图像转化为灰度图rgb2gray
    end
    nbins = 256;
    %计算图像F的灰度直方图h(imhist函数;
    %或者通过两重循环遍历每个像素点从而得到每个灰度值的累计像素点个数)。
    hist_0 = imhist(I,nbins)';
    %计算原图的灰度分布概率hs。hs=h/(M*N)        (i=0,1,,255)。
    hist_1 = hist_0/(height*width);
    %计算原图灰度的累计分布hp0(使用cumsum函数)
    hp_0 = cumsum(hist_1);
    %hp1=hp0*255 将hp1四舍五入,令hp1(1)=0
    hp_1 = round(hp_0*255);
    hp_1(1)=0;
    
    I0 = double(I);
    %置两重循环遍历图像F中所有像素点,求出每一个像素点的灰度值F(i,j)
    for i=1:height
        for j=1:width
            GrayScale=I0(i,j);
            NewGrayScale = hp_1(GrayScale+1);
            J(i,j)=NewGrayScale;
        end
    end
    %计算得到的新图像矩阵中所有点的灰度值由double转换为uint8
    J = uint8(J);  %转换uint8编码
    

    测试结果

    学如逆水行舟,不进则退
    
    展开全文
  • 直方图进行均衡化处理的源代码: 把原始图像的灰度直方图从比较集中的某个灰度区间变成在全部灰度范围内的均匀分布。对图像进行非线性拉伸,重新分配图像像素值,使一定灰度范围内的像素数量大致相同。把给定图像...
  • 对于彩色图像,我们可以对 R(红)G(绿)B(蓝) 每个通道都执行直方图均衡化来改善照片的质量...对于灰度图像,我们可以直接对其进行直方图均衡化来改善照片的质量。matlab实现数字图像处理均衡化图像的五种图像变换方式。
  • 1. 彩色图像转换为灰度图像; 2. 根据灰度图像的灰度值分布情况,绘制直方图; 3. 直方图均衡化; 4. 根据灰度图片直方图进行图像分割; 包含文档、Java和Matlab代码、结果图等
  • 直方图均衡化 matlab算法实现
  • 数字图像处理实验(1)--灰度图直方图均衡化。编程实现灰度图像的直方图均衡化处理。要求给出原始图像的直方图、均衡化图像及其直方图和直方图均衡化时所用的灰度级变换曲线图。
  • Matlab实现图像直方图均衡化(无调用函数,新人练手) %画出图像的灰度直方图 %画出均衡化后的直方图 %得到均衡化后的图像 clc;clear; a=imread('girl.jpg'); a=a(:,:,1); subplot(221) imshow(a); title('原图'); ...
  • 实验目的: 掌握直方图均衡化的原理以及步骤,了解直方图均衡化的作用、效果。 实验要求: 实现对任意图像进行直方图均衡化
  • matlab灰度图直方图均衡化代…

    千次阅读 2016-06-26 10:45:37
    原文地址:matlab灰度图直方图均衡化代码作者:小金三 matlab灰度图直方图均衡化代码 clear all %一,图像的预处理,读入彩色图像将其灰度化 PS=imread('1.jpg');  %读入JPG彩色图像文件 imshow(PS) %显示出来 ...
  • 数字图像处理课程作业,灰度直方图均衡化算法,matlab代码
  • MATLAB--数字图像处理 图像直方图均衡化

    万次阅读 多人点赞 2019-09-03 15:43:01
    图像直方图均衡化 ...直方图均衡化就是把给定图像的直方图分布改变成“均匀”分布直方图分布,具体见下图(说的简单点,就是把原来的图像的灰度分配均匀,使得0-255都有一定的取值,这样对比度相对...
  • 目录1.Objectives:2.Experiment Content:3.Experiment Principle:4.Experiment Steps Result and Conlusion:5.Appendix(programs and images...2、 熟悉直方图均衡化的计算过程; 3、 计算并绘制图像直方图,实现...
  • 图像灰度直方图的均衡化和规定化 matlab灰度直方图均衡化均衡化步骤:代码实现:结果对比:规定化:定义:作用:做法:主要映射方法:结果对比: 灰度直方图 灰度直方图:反映了该图像中不同灰度级出现的统计情况。 ...
  • 本文主要介绍了灰度直方图相关的处理,包括以下几个方面的内容:利用OpenCV计算图像的灰度直方图,并绘制直方图曲线直方图均衡化的原理及实现直方图规定化(匹配)的原理及实现图像的灰度直方图一幅图像由不同灰度值的...
  • 这是图像处理课程的作业,不使用MATLAB自带的函数,而是自己用算法实现直方图均衡化和规定化的源代码。
  • Matlab实现基于直方图均衡化的图像灰度变换 效果展示(实验测试用图,侵删) 拔群有没有!!! 以下为实现流程 灰度统计函数 nums.m %传参为图像灰度量化等级,图像矩阵; %返回灰度频数,频率 function [times,...
  • matlab实现直方图均衡化

    万次阅读 多人点赞 2018-04-16 15:34:34
    直方图均衡化是一种利用灰度变换自动调节图像对比度质量的方法,基本思想是通过灰度级的概率密度函数求出灰度变换函数,它是一种以累计分布函数变换法为基础的直方图修正法。直方图均衡化处理的步骤如下:1. 求出...
  • 基于matlab直方图均衡化的彩色图像增强程序,通过matlab仿真,比较均衡化后的还原图像与输入原始真彩色图像,输出图像轮廓更清晰,亮度明显增强
  • 实现平台直方图的计算与显示,包括后续灰度量化与转换
  • 使用matlab编程实现灰度图像的直方图均衡化算法(不使用matlab自带的histeq函数)。采用函数调用,将自己编写的函数命名为myhisteq。将用myhisteq得到的结果与自带的histeq函数进行比较。
  • 直方图均衡化又称为直方图平坦化。直方图均衡化的基本思想是将原始图像的不均衡的直方图变化为均匀分布的形式,即将输入图像转化为在每一灰度级上都有相同的像素点数(即输入的直方图是平坦的,其) ...
  • MATLAB中图像读取函数与OpenCV一样是imread,可以打开指定路径图片,其路径表示方式与OpenCV中有些许不同如: srcImage=imread('E:\MatlabWorkSpace\实验一\实验一一.png'); 路径符号为单"\",Opencv为双"\",其函数...
  • 问题1:提取RGB三个通道图像,计算其平均直方图结果,然后再进行均衡化; 问题2:RGB空间转为HSI空间图像,对I(亮度,Intensity)通道进行直方图均衡化,再转为RGB图像。

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 2,331
精华内容 932
关键字:

matlab灰度图直方图均衡化

matlab 订阅