计算绘制图像灰度直方图

计算绘制图像灰度直方图,第1张

OpenCV中分析绘制直方图并没有直接可用的函数,以下是绘制直方图统计的一种实现。

paint_histogramh:

paint_histogramcpp如下所示:

main函数调用如下:

执行结果如下:

内容来自于书籍。

MATLAB

命令:I=imread('bmp格式的图像');

a=rgb2gray(b);

imhist(a);

VB,imhist也行

要有C语言用for(i=0;i<256;i++)

{

m_count[i]=0;

}

for(i=0;i<m_Height;i++)

for(j=0;j<m_Width;j++)

{

lpSrc=(unsigned char)m_lpDIBBits+((m_Width8+31)/324)i+j;

m_count[lpSrc]++;

}

也行。。。。。。。

img=imread('myImgjpg');

my_hist=imhist(img);

% 直方图的结果是一个向量,每一位对应一个统计数值,相应灰度值的像素个数直接访问就好了

nb_pixels=my_hist(x+1); % 比如 灰度值为x的像素个数 (注意要加1,因为像素值从0开始)。

我想说的是,sum是求图像矩阵f的列的和,X=sum(f)然后返回一个1行3列的向量放到X中,每列存有RGB各分量的总和,而Y=sum(f');同样的道理,直方图是针对单变量的数据统计,据我所知,MATLAB存储的默认是RGB格式,只要是一副图,无论怎么取直方图,RGB各分量的直方图都是一样的,和垂直到某个坐标轴没有关系,这个你可以直接用IMhist和BAR函数直接求出,你求出的XY对于直方图没有意义!

暗图像对应的直方图组成成分几种在灰度值较小的左边一侧

明亮的图像的直方图则倾向于灰度值较大的右边一侧

对比度较低的图像对应的直方图窄而集中于灰度级的中部

对比度高的图像对应的直方图分布范围很宽而且分布均匀

因此,直方图反映了图像的清晰程度,当直方图分布均匀时,图像最清晰。

提取程序源代码:

function IMG_Out=Circle_Region_Extract(IMG_In,Radius,Center)  

if ~(abs(Center(1)-Radius)<0 & abs(Center(2)-Radius)<0)     [m,n,~]=size(IMG_In);     [X,Y]=meshgrid(1:n,1:m);

    R_temp=sqrt((X-Center(1))^2+(Y-Center(2))^2);     R_temp1=R_temp<=Radius;     if(numel(size(IMG_In))>2)

        R_Out=R_temp1im2double(IMG_In(:,:,1));         G_Out=R_temp1im2double(IMG_In(:,:,2));         B_Out=R_temp1im2double(IMG_In(:,:,3));         IMG_Out(:,:,1)=R_Out;         IMG_Out(:,:,2)=G_Out;         IMG_Out(:,:,3)=B_Out;     else

        IMG_Out=R_temp1im2double(IMG_In);      end else

    disp('exceed Radius'); end

imshow(IMG_Out);    

例子:

某一通道灰度图

I=imread('C:\Users\Administrator\Desktop\Ajpg'); I1=Circle_Region_Extract(I(:,:,1),300,[700,840]);

效果图如下:

以上就是关于计算绘制图像灰度直方图全部的内容,包括:计算绘制图像灰度直方图、什么软件能直接获得图片的灰度直方图HISTOGRAM、matlab 怎么看一个灰度直方图等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/10147443.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-05
下一篇 2023-05-05

发表评论

登录后才能评论

评论列表(0条)

保存