Advertisement

医学图像处理——直方图

阅读量:

上一期:医学图像处理——编写图像亮度变换函数

亮度变换不仅可以直接对每个像素的亮度值进行变换,同样我们还可以用一幅图像的直方图作为手段进行变换!

什么是图像的直方图?

一幅数字图像在范围[0, G]内总共有L个灰度级,其直方图定义为离散函数

其中,r是区间[0, G]内的第k级亮度,n是灰度级为r,的图像中的像素数。对于uint8类图像,G的值为255;对于uint16类图像,G的值为65 535;对于double类图像, G的值为1.0。记住,MATLAB中的索引不能为0,故r1相当于灰度级0, r2 相当于灰度级1,如此等等,rL相当于灰度级G。其中,uint8类图像或uint16类图像中G=L-1。

imhist函数

在处理直方图的工具箱中,核心函数是imhist,其基本语法为:

f为输入图像,h为其直方图的h(rk),b是灰度级的个数,若缺省,则默认为256。若我们要处理一幅uint8类图像并令b = 2,则亮度标度范围被分成两部分:0至127和128至255。所得的直方图将有两个值: h(1)等于图像在区间[0, 127]内的像素总数, h(2)等于图像在区间[128, 255]内的像素总数。这样解释的话,b的作用就一目了然了。

若不指定输出则可以绘制直方图。

我们可以用一幅大脑CT图演练一下

复制代码
 f=imread("Fig0233(a).tif");

    
  
    
 figure(1);
    
  
    
 subplot(1,2,1);
    
  
    
 imshow(f);
    
  
    
 subplot(1,2,2);
    
  
    
 imhist(f);

结果如下:

但是这样的直方图其实并不是很美观,所以我们可以调整一下。

复制代码
 f=imread("Fig0233(a).tif");

    
  
    
 figure(1);
    
  
    
 subplot(3,1,1);
    
  
    
 imshow(f);
    
  
    
 subplot(3,1,2);
    
  
    
 imhist(f);
    
  
    
 h=imhist(f);
    
  
    
 h1=h(1:5:256);
    
  
    
 horz=1:5:256;
    
  
    
 subplot(3,1,3);
    
  
    
 bar(horz,h1);

我们利用horz来进行横坐标的调整,利用bar进行调整,做出视觉效果跟好的柱状图。其实不止只有这些调整,MATLAB里面针对直方图的函数还有很多,感兴趣的可以自己试一试哟!

小白今天的介绍就到这里啦!

内容很简单,但自己尝试一下会觉得很有意思哟,快动手试试吧!

更多干货请加微信:医电小白的进阶之路

全部评论 (0)

还没有任何评论哟~