精华内容
下载资源
问答
  • matlab打开图像,显示灰度直方图均值方差
  • matlab均值方差柱状

    千次阅读 2017-12-15 10:39:32
    一、源代码 >> a=[8 9 10 7 8 9];%mean >> b=[1 2 1 3 1 1]%std b =  1 2 1 3 1 1 >> figure(); >> bar(a,'c'); >> hold on; >> errorbar(a,b,'k','LineStyle','none'); ...二、效果

    一、源代码

    >> a=[8 9 10 7 8 9];%mean
    >> b=[1 2 1 3 1 1]%std
    b =

         1     2     1     3     1     1

    >> figure();
    >> bar(a,'c');
    >> hold on;
    >> errorbar(a,b,'k','LineStyle','none');

    二、效果



    展开全文
  • 直方图,改对比度,计算均值方差和信息熵实现

    MATLAB | 画彩色图像的直方图,改对比度,计算均值、方差和信息熵

    何为直方图,就是一幅图像的像素分布情况的条形图。如一幅RGB图像灰度化后,其像素均在在0-255范围内。以matlab里函数***h=imhist(f,b)***为例:
    f是输入图像,b表示容器,如b为10,那么横坐标就有25个区间段。
    彩色图像、红绿蓝图像分量、灰度图像都可以画出直方图。直方图对后续的图像增强、压缩、分割描述具有重要作用(后面再更啦),如调制图像的对比度那么像素分布肯定有变化,而且可以通过直方图看出变换明显的地方,如峰值。

    当然绘制直方图还可以用***bar、stem、plot函数***,因为第一次分享博客是入学之前的小作业,这些也是后面慢慢摆上来。

    在介绍方差均值之前说说,在matlab里如何得到具体数值吧 hhh这也是我开始没有具体做之前想的一个小问题。就是用matlab里自带的size函数
    [M,N]=size(f)返回图像的行和列的数目,然后f(i,j)可得具体像素值,有此之后,其他的都是简单的数学知识,有些许c语言基础应该很快编出来!

    下面就是具体matlab代码

    // clc;
    A1=imread('D:\MATshujialianxi\tushuguan.jpg');
    subplot(4,4,1);imshow(A1);title('原图');
    Ar=A1(:,:,1);%R通道 
    Ag=A1(:,:,2);%G通道 
    Ab=A1(:,:,3);%B通道 
    subplot(4,4,4),imshow(A1(:,:,1));title('红色分量图'); %R通道 
    subplot(4,4,7),imshow(A1(:,:,2));title('绿色分量图'); %G通道 
    subplot(4,4,10),imshow(A1(:,:,3));title('蓝色分量图'); %B通道 
    %subplot(ABK)可以在一张figure里显示多张图片,AB意思是几行几列的图片,K是那行的第几个图,是图片的话后面用imshow,直方图用imhist,,,,title是该小图的标题,一般默认居中。
    
    %h=imhist(f,b);f为输入图像,b意为将0-256区间分为256/b个区间段;
    %imhist( i );直接显示图像i的灰度直方图;
    %imhist(i,n)n为指定灰度级显示直方图;
    %[count, x] = imhist( i ) 获取直方图信息,count为每一级灰度像素个数,x为灰度级
    subplot(4,4,5),imhist(Ar);title('红色分量直方图');
    subplot(4,4,8),imhist(Ag);title('绿色分量直方图');
    subplot(4,4,11),imhist(Ab);title('蓝色分量直方图');
    subplot(4,4,6),imhist(Ar,10);title('红色指定灰度级');
    subplot(4,4,9),imhist(Ag,25);title('绿色指定灰度级');
    subplot(4,4,12),imhist(Ab,50);title('蓝色指定灰度级');
    if length(size(A1))>2%size获得矩阵的大小,length获得矩阵最大维度
        A1=rgb2gray(A1);
    end
    %上面if语句可以自动判断是否为彩色图像,都会转化成二维的灰度图
    
    subplot(4,4,2);imshow(A1);title('原图灰度化');
    subplot(4,4,3);imhist(A1);title('原直方图');
    
    %用imadjust对灰度图像进行灰度变换,用histeq进行直方图均衡处理
    ima=imadjust(A1);%按默认参数进行对比度调整
    his=histeq(A1);%按默认参数对直方图进行均衡化
    subplot(4,4,13);imshow(ima);title('对比度默认拉伸图');
    subplot(4,4,14);imhist(ima);title('对比度默认拉伸后的直方图');
    subplot(4,4,15);imshow(his);title('灰度图均衡后图');
    subplot(4,4,16);imhist(his);title('灰度图均衡后直方图');
    
    %求图像矩阵均值、方差、信息熵
    %求矩阵所有元素(像素)的和
    [row,col]=size(A1);%获取行数 和 列数
    A1=double(A1);%要先转换成double 否则不能实现累加,matlab读入图像的数据是uint8,而matlab中数值一般采用double型(64位)存储和运算
    sum=0; 
    for i=1:row
    for j=1:col
    sum=sum+A1(i,j);
    end
    end
    %disp(sum);
    
    %求均值
    mid=sum/(row*col);
    disp(['均值mid:',num2str(mid)]);
    
    %求方差
    s=0;
    for x=1:row
    for y=1:col
    s=s+(A1(x,y)-mid)^2;%求得所有像素与均值的平方和。
    end
    end
    var=s/(row*col);%方差
    disp(['方差var:',num2str(var)]);
    
    %求信息熵,通信原理上面有
    [M,N]=size(A1);
    temp=zeros(1,256);%设置空白矩阵,用于记录概率,一行256列的0矩阵。
    for m=1:M
    for n=1:N
    if A1(m,n)==0%如果数值为0
    i=1;%序号为1
    else
    i=A1(m,n);%否则为原来序号
    end
    temp(i)=temp(i)+1;%统计每个灰度值出现的次数
    end
    end
    
    temp=temp/(M*N);%所有值除以元素个数,表示概率 即公式中的P(i)
    com=0;
    for i=1:length(temp)%返回temp的行列中的最大值 即256
    if temp(i)==0%如果概率为0 则不累加 0要单独处理
    else
    com=com-temp(i)*log2(temp(i));
    end
    end
    disp(['信息熵com:',num2str(com)]);
    
    
    
    

    原图(不知道会不会有校友看见这熟悉的场景!)
    在这里插入图片描述变换之后的图
    在这里插入图片描述具体均值方差数字如下
    在这里插入图片描述

    啦啦啦!加油冲! 希望能给自己不断总结,进步的同时,能帮助到其他学习者!奋斗者!

    本文参考了冈萨雷斯的数字图像处理,大家可以学学,基础版,学到就是自己的!!!
    和其他大佬的一些具体步骤,总的来说,自己学到了这些知识,一起进步!
    https://blog.csdn.net/piaoxuezhong/article/details/78269439

    展开全文
  • MATLAB提取灰度直方图的特征,如能量、均值方差等。
  • 直方图阈值双峰法的matlab程序及结果。非常简单的一个小课件。
  • 改变灰度图像直方图均值和标准差 当我们有一张较暗淡的图像,我们想让图像变明亮;或者反过来,如果图像严重曝光,我们想让图像变暗。这时,我们可以采用什么方法呢?我们可以直接对图像的直方图进行操作,改变...

    改变灰度图像直方图的均值和标准差

            当我们有一张较暗淡的图像,我们想让图像变明亮;或者反过来,如果图像严重曝光,我们想让图像变暗。这时,我们可以采用什么方法呢?我们可以直接对图像的直方图进行操作,改变灰度图像直方图的均值和标准差。进而实现我们想要的效果。

            算法如下式:其中m0和s0表示的是我们想要图像像素分布变成的均值和标准差,m和s是原图像的均值和标准差:

    改变图像直方图的均值和标准差公式 ↑


    实验:通过上述算法实现对图像直方图的均值和标准差的改变

    import cv2
    import numpy as np
    import matplotlib.pyplot as plt
    
    # histogram manipulation
    def hist_mani(img, m0=128, s0=52):
    	m = np.mean(img)
    	s = np.std(img)
    
    	out = img.copy()
    
    	# normalize
    	out = s0 / s * (out - m) + m0
    	out = np.clip(out,0,255)
    	out = out.astype(np.uint8)
    
    	return out
    
    # Read image
    img = cv2.imread("../head_g.jpg",0).astype(np.float)
    out = hist_mani(img,m0=130,s0=60)
    
    # Display histogram
    plt.hist(out.ravel(), bins=255, rwidth=0.8, range=(0, 255))
    plt.savefig("out_his.png")
    plt.show()
    plt.hist(img.ravel(), bins=255, rwidth=0.8, range=(0, 255))
    plt.savefig("out_his_img.png")
    plt.show()
    # Save result
    cv2.imshow("result", out)
    cv2.imwrite("out.jpg", out)
    
    cv2.waitKey(0)
    cv2.destroyAllWindows()
    
    

    实验结果:

    原图像的像素分布 ↑

    修改直方图的均值和标准差后图像的像素分布 ↑

     

    原图 ↑

    改变直方图均值和标准差之后的图像 ↑

            可以看到,原图像是比较暗的,像素集中于靠近0的部分。我们通过增大图像直方图的均值和标准差,使得图像的像素值整体增大,由此增加了图像的亮度。如果你想要减小图像的亮度,则可以考虑采用与此相反的方法。


    参考内容:

            https://www.cnblogs.com/wojianxin/p/12509911.html

            https://www.jianshu.com/p/eae053c19f96

    展开全文
  • Matlab直方图

    2021-10-13 12:31:32
    %% 绘制统计直方图 %hist(y):如果y是向量,则把其中元素放入10个条目中,且返回每条中的元素的个数;如果y为矩阵,则分别对每列进行处理,显示多组条形。 %[n,xout]=hist(y,x):非递减向...

     1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    11

    12

    13

    14

    15

    16

    17

    18

    19

    20

    %% 绘制统计直方图

    %hist(y):如果y是向量,则把其中元素放入10个条目中,且返回每条中的元素的个数;如果y为矩阵,则分别对每列进行处理,显示多组条形。

    %[n,xout]=hist(y,x):非递减向量x的指定bin的中心。向量xout包含频率计数与条目的位置。

    x=-10:.1:10;

    y1=randn(2008,1);

    y2=randn(2008,3);

    figure;

    colormap(winter);

    subplot(2,2,1);

    hist(y1);%把其中元素放入10个条目中

    title('y1为向量,default,n=10');

    subplot(2,2,2);

    hist(y2);%分别对每列进行处理,显示多组条形

    title('y2为矩阵');

    subplot(2,2,3);

    hist(y1,x);%用户也可以使用[n,xout]=hist(y1,x);bar(xout,n)绘制条形直方图

    title('向量x指定条目');

    subplot(2,2,4);

    hist(y2,1000);%第二个参数为标量时指定bin的数目

    title('nbins=1000');

    1

    2

    3

    4

    5

    6

    7

    8

    9

    %% ========均值方差直方图========

    a=[8 9 10 7 8 9];%mean

    b=[1 1 1 1 1 1];%std

    figure();

    h=bar(a);

    ch=get(h,'children');

    set(ch,'FaceVertexCData',[4;2;3;1;5;6]);%使用Indexed形式指定每组bar的颜色

    hold on;

    errorbar(a,b,'k','LineStyle','none');

    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    11

    12

    13

    14

    15

    16

    17

    18

    19

    20

    21

    22

    23

    24

    %% =======散点图scatter , scatter3 , plotmatrix======

    %scatter3(X,Y,Z,S,C):在由向量X、Y和Z指定的位置显示大小和颜色分别由S和C决定的离散点

    figure;

    [x,y,z] = sphere(16);

    X = [x(:)*.5 x(:)*.75 x(:)];

    Y = [y(:)*.5 y(:)*.75 y(:)];

    Z = [z(:)*.5 z(:)*.75 z(:)];

    S = repmat([10 2 5]*10,numel(x),1);

    C = repmat([1 2 3],numel(x),1);

    subplot(1,2,1);

    scatter(X(:),Y(:),S(:),C(:));

    title('scatter');

    subplot(1,2,2);

    scatter3(X(:),Y(:),Z(:),S(:),C(:),'filled'), view(-60,60);

    title('scatter3');

    %plotmatrix(X,Y)绘出X(p*M)与Y(p*N)的列组成的散度图(N,M)

    figure;

    X=randn(100,2);Y=randn(100,2);

    subplot(1,3,1),plotmatrix(X);%等价于plotmatrix(X,X),除了对角上的图为X每一列的直方图hist(X(:,col))

    title('plotmatrix(X)');

    subplot(1,3,2),plotmatrix(X,X);

    title('plotmatrix(X,X)');

    subplot(1,3,3),plotmatrix(X,Y);

    title('plotmatrix(X,Y)');

    展开全文
  • MATLAB均值方差、均方差的计算方法
  • 目录 一、功能 二、语法 1.histfit(data) 2.histfit(data,nbins) 3.histfit(data,nbins,dist) ...1.具有正态拟合分布的直方图 ...2.给定bin数的直方图 ...3.具有指定分布拟合的直方图 ...绘制data中的值的直方图...
  • (1)直方图均衡化及直方图匹配; (2)空间滤波(均值滤波及中值滤波),并计算信噪比。 二.结果 1.直方图均衡化     图1 直方图均衡化   2.直方图匹配   图2 直方图匹配 3.空间滤波   图3 空间滤波 三...
  • 在进行图像灰度处理时,直方图有助于在处理时进行更好的判断。下面对直方图可能用途进行总结如下:%展示图像的直方图 %image_in为输入图像;b为用于形成直方图的统计堆栈的数目,默认为256 h=imhist(image_in,b);%...
  • 选择一幅灰度图像,用Matlab编程计算该图像的灰度均值方差和熵。如何插入一段漂亮的代码片 中的图片: 如何插入一段漂亮的代码片 // An highlighted block var foo = 'bar'; ...
  • Matlab实现图像直方图均衡化(无调用函数,新人练手) %画出图像的灰度直方图 %画出均衡化后的直方图 %得到均衡化后的图像 clc;clear; a=imread('girl.jpg'); a=a(:,:,1); subplot(221) imshow(a); title('原图'); ...
  • 图像质量评价时可用。用Opencv1.0及C语言代码编写,支持灰度图像以及彩色图像。
  • % 将彩色图片换成灰度图像 求图像的均值 方差 熵 im=(imread('robot.jpg')); figure,imshow(im); % Step1 分别显示RGB三个通道图片 subplot(2,2 ,1),imshow(im); %原始彩色图像 subplot(2, 2 ,2),imshow(im(:...
  • 制作gui界面,根据输入两个整数,画直方图直方图的直方数和随机数的个数由界面输入;随机数的类型请用radiobutton控制,至少给出三种随机数组合。 入门系列一从界面到功能具体实现详细下戳 Matlab GUI入门-文件...
  • 产生一个随机分布的指定均值方差的矩阵:将 randn 产生的结果乘以标准差,然后加上期望均值即可。例如,产生均值为10,方差为 1/100 的一个1*5的随机数方式如下:   % generate a wave with a variance of 1/...
  • 题目: 某厂生产的零件重量服从正态分布 ,现从该厂生产的零件中抽取9个,测得其质量...(2)作出附加有该正态密度曲线的直方图 。 问题理论分析: 显然, 该置信区间为双侧置信区间, σ²未知, 则置信区间为 程序...
  • %% 直方图 load('b.mat'); hist(b); set(0,'defaultfigurecolor','w') title('Histogram of Score'); xlabel('x') %% 核密度估计曲线 load('b.mat'); ksdensity(b); set(0,'defaultfigurecolor','w') ...
  • Matlab实验数据条形 bar

    千次阅读 2020-05-20 18:11:01
    近期处理实验数据,采集一些离散点,想按自变量分组, 对数据进行分析,即绘制直方图 直方图绘制方法 histogram(X) 具体详情查matlab帮助文档 x = randn(10000,1); h = histogram(x) bar(y) 我看中了用 bar 函数...
  • 图像的直方图图像的直方图处理是从概率统计的角度出发,对图像灰度级的概率分布进行变换,从而达到使图像细节丰富、动态范围较大、便于观测和理解的目的。直方图处理是多种空间域处理技术的基础,可以直接用于图像的...
  • 实验一一、实验名称图像的采样与量化二、实验目的1.熟悉MATLAB软件的使用。2.掌握采样与量化的原理及数学运算。3.于MATLAB环境下编程实现对...实验二一、实验名称图像的灰度变换与直方图修正二、实验目的1.熟悉MATL...
  • 本文介绍了图像特征分析的常用方法,包括颜色矩、颜色直方图、灰度差分统计、自相关函数、灰度共生矩阵。介绍了这些特征量的基本概念、特征规律、以及通过Matlab的实现方法与代码。
  • 步骤:新的灰度是原始灰度的累加,累计概率密度映射 实现代码:g=histeq(f,256) 直方图匹配(规定化)的思想、步骤、实现 g=histeq(f,p) 答:生成具有特定直方图的图像方法,称为直方图匹配或直方图规定化 1.直方图...
  • 读取MATLAB自带图像,对该图像进行直方图均衡化,显示处理前后的图像及直方图的变化,附上代码及相关说明。 clc;clear;close all; path(path,'D:\R2019a\toolbox\images\imdata'); % 读取路径图像信息 im=imread('...
  • 个人感觉这一章不用直方图也可以搞定,只不过直方图的计算量更小。老规矩,我们还是通过例子引入原理,再推广到公式。我们已经知道直方图均衡是有些东西搞不定的了,需要引入直方图匹配。或者局部直方图处理。局部...
  • 最大类间方差寻找最佳阈值实现图像的分割 顾名思义,该方法是使用最大类间方差实现图像分割中最佳阈值的寻找。 为什么最大类间方差能实现分割阈值的寻找? 答:从统计学的意义上讲,方差是表征数据分布不均衡的...
  • 本代码是没有调用MatlaB库函数来实现对图像的灰度转换、二值化、直方图均衡化以及拉普拉斯变换。你只需要修改读图片代码的路径就可以直接运行。

空空如也

空空如也

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

matlab均值方差直方图

matlab 订阅