2月25日 图像的表示,定义,亮度、对比度、饱和度、锐化、分辨率,直方图均衡化算法原理与实现

修订

  • 20200229 修改最后一个直方图演示灰度图片matlab代码, I(i,j) = CumuPixel(I(i,j)+1);

数字图像

1、数字图像定义
对于一幅图像,我们可以将其放入坐标系中,这里取图像左上定点为坐标原点,u轴向右,和笛卡尔坐标系x轴相同;v 轴向下,和笛卡尔坐标系y轴相反。 这样我们可将一幅图像定义为一个二维函数 f(u,v),图像中的每个像素就可以用 (u,v)坐标表示,而在任何一对空间坐标 (u,v) 处的幅值$ f $称为图像在该点的强度或灰度,当 u,v 和灰度值 f f 是有限离散数值时,便称该图像为 数字图像。
在这里插入图片描述

2、数字图像形成过程
我们平时见到的多数图像都是有照射源和形成图像的场景元素对光能的反射和吸收而产生的,得到我们可见的数字图像分为一下几个步骤:

(1) 图像sensor感知和获取

注:由图形形成模型来理解一下灰度级或强度级,请看下面

上面我们提到图像可由而为函数 f(u,v) 表示,其物体意义其实就来自于照射源对物体的照射,函数 f(u,v) 可由两个分量来表示:

  • 入射到被观察场景的光源照射总量 L ( u , v ) L(u,v)
  • 场景中物体所反射的光源总量 R ( u , v ) R(u,v)

F ( u , v ) = L ( u , v ) R ( u , v ) F(u,v)=L(u,v)*R(u,v)
0 < L < 0<L<∞
< R < 1 <R<1

在这里插入图片描述

因此图像的灰度值或强度值是由入射分量和反射分量 决定的, L ( u v ) L(u,v) 的性质取决于照射源,而R(u, v) 的性质取决于成像物体的特性,公式只是给出了 L ( u v ) , R ( u v ) L(u,v),R(u,v) 的一般取值范围,自然对于不同的照射源和成像物体则 L ( u v ) , R ( u v ) L(u,v),R(u,v) 会有不同的取值,因此数字图像灰度取值范围便是:
L m i n < F i m a g e < L m a x L_{min}<F_{image}<L_{max}

因此区间 [ L m i n L m a x ] [L_{min},L_{max}] 便称为图像的灰度级,实际情况下常常令该区间为[0,L-1],其中f=0时为黑色,f=L-1时在灰度级中为白色,所有中间值是从黑色到白色之间变化的灰度色调,而图像最高和最低灰度级之间的灰度差便为对比度

(2)图像取样和量化

为了产生一幅数字图像,我们需要把连续的感知数据转化为数字形式,便是:取样和量化。取样和量化目的便是为了将连续的感知数据离散化,而且图像的质量在很大程度上也取决于取样和量化中所用的样本数和灰度级.

  • 采样是把空域上或时域上连续的图像(模拟图像)转换成离散采样点(像素)集合(数字图像)的操作。
    在这里插入图片描述

  • 量化是把像素的灰度(浓淡)变换成离散的整数值的操作。最简单的量化是用黑(0)白(255)两个数值(即2级)来表示,成为二值图像。

量化越细致,灰度级数(浓淡层次)表现越丰富。计算机中一般用8bit(256级)来量化,这意味着像素的灰度(浓淡)是0—255之间的数值。化级数的效果图如下:
在这里插入图片描述

  • 图像直方图:灰度直方图(histogram)是灰度级分布的函数,它表示图象中具有每种灰度级的象素的个数,反映图象中每种灰度出现的频率。灰度直方图的横坐标是灰度级,纵坐标是该灰度级出现的频率,是图象的最基本的统计特征。

生成图像灰度直方图的一般步骤:
1、统计各个灰度值的像素个数;
2、根据统计表画出直方图

在这里插入图片描述

  • 图像的阀值(二值)处理:图像的阀值处理是将图像的像素灰度值在某个定值(设为t)以上的点赋值为白色(或黑色),在这个定值t以下的点赋值为黑色(或白色)的处理过程。用公式表示成:
    在这里插入图片描述

亮度、对比度、饱和度、锐化、分辨率

画重点啦:
图像亮度、对比度、饱和度和锐化之间并不是彼此独立的,改变其中一个特征可能会同时引起图像其他特征的变化,至于变化的程度取决于图像本身的特性.

1、亮度
图像亮度通俗理解便是图像的明暗程度,数字图像 f(x,y) = i(x,y) r(x, y) ,如果灰度值在[0,255]之间,则 f 值越接近0亮度越低,f 值越接近255亮度越高。

而且我们也要把亮度和对比度区分开来,正如上述提的对比度指的是最高和最低灰度级之间的灰度差

过度增加亮度导致阴影赶上了高光,因为最大灰度值是固定的, 所以最低灰度值快赶上了最大灰度值,因此影响了图片的饱和度、对比度和清晰度.

2.饱和度指的是图像颜色种类的多少, 上面提到图像的灰度级是[Lmin,Lmax],则在Lmin、Lmax 的中间值越多,便代表图像的颜色种类多,饱和度也就更高,外观上看起来图像会更鲜艳,调整饱和度可以修正过度曝光或者未充分曝光的图片。使图像看上去更加自然

3.锐化,图像锐化是补偿图像的轮廓,增强图像的边缘及灰度跳变的部分,使图像变得清晰。图像锐化在实际图像处理中经常用到,因为在做图像平滑,图像滤波处理的时候经过会把丢失图像的边缘信息,通过图像锐化便能够增强突出图像的边缘、轮廓.

图像锐化和边缘检测:https://www.iteye.com/blog/dsqiu-1638589

     1、单方向一阶微分锐化,包括:

             水平方向

             垂直方向

             Kirsch算子

        2,无方向微分锐化,包括:

             Roberts算子

             Sobel算子

             Prewitt算子

             Laplacian算子(二阶微分)
             LOG算子(二阶微分
       3,二阶微分锐化

4,分辨率:每英寸图像内有多少个像素点,即:像素每英寸,单位为PPI(Pixels Per Inch)

数字图像处理之6大颜色空间

1)RGB颜色空间

2)CMY/CMYK颜色空间

CMY是工业印刷采用的颜色空间。它与RGB对应。简单的类比RGB来源于是物体发光,而CMY是依据反射光得到的。具体应用如打印机:一般采用四色墨盒,即CMY加黑色墨盒

3)HSV/HSB颜色空间

HSV颜色空间是为了更好的数字化处理颜色而提出来的。有许多种HSX颜色空间,其中的X可能是V,也可能是I,依据具体使用而X含义不同。H是色调,S是饱和度,I是强度

HSB(Hue, Saturation, Brightness)颜色模型,这个颜色模型和HSL颜色模型同样都是用户台式机图形程序的颜色表示, 用六角形锥体表示自己的颜色模型。

在这里插入图片描述

4)HSI/HSL颜色空间

HSI颜色空间是为了更好的数字化处理颜色而提出来的。有许多种HSX颜色空间,其中的X可能是V,也可能是I,依据具体使用而X含义不同。H是色调,S是饱和度,I是强度。HSL(Hue, Saturation, Lightness)颜色模型,这个颜色模型都是用户台式机图形程序的颜色表示, 用六角形锥体表示自己的颜色模型。

HSL空间:代表色相,饱和度,明度三个通道的颜色。 H: Hue 色相、 S:Saturation 饱和度、 L :Lightness 明度。

在这里插入图片描述

BrightnessAttribute of a visual sensation according to which an area appears to emit more or less light.Lightness
The brightness of an area judged relative to the brightness of a similarly illuminated area that appears to be white or highly transmitting.出自 《COLOR APPEARANCE TERMINOLOGY》

由此得知,Brightness是主观上感知光的强弱。而Lightness应该是目标相对于周边的来说有多白,也就是主观上明度的强弱。

作者:千羽
链接:https://www.zhihu.com/question/288577326/answer/463132587
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

5)Lab颜色空间

Lab颜色模型是由CIE(国际照明委员会)制定的一种色彩模式。自然界中任何一点色都可以在Lab空间中表达出来,它的色彩空间比RGB空间还要大。另外,这种模式是以数字化方式来描述人的视觉感应, 与设备无关,所以它弥补了RGB和CMYK模式必须依赖于设备色彩特性的不足。由于Lab的色彩空间要比RGB模式和CMYK模式的色彩空间大。这就意味着RGB以及CMYK所能描述的色彩信息在Lab空间中都能 得以影射。Lab颜色模型取坐标Lab,其中L亮度;a的正数代表红色,负端代表绿色;b的正数代表黄色, 负端代表兰色(a,b)有L=116f(y)-16, a=500[f(x/0.982)-f(y)], b=200[f(y)-f(z/1.183 )];其中: f(x)=7.787x+0.138, x<0.008856; f(x)=(x)1/3,x>0.008856
在这里插入图片描述
6)YUV/YCbCr颜色空间

YUV是通过亮度-色差来描述颜色的颜色空间。

亮度信号经常被称作Y,色度信号是由两个互相独立的信号组成。视颜色系统和格式不同,两种色度信号经常被称作UV或PbPr或CbCr。这些都是由不同的编码格式所产生的,但是实际上,他们的概念基本相同。在DVD中,色度信号被存储成Cb和Cr(C代表颜色,b代表蓝色,r代表红色)。

直方图均衡化算法原理与实现

直方图均衡化的作用是图像增强,
直方图均衡化是图像处理领域中利用图像直方图对对比度进行调整的方法.
在这里插入图片描述
在这里插入图片描述

变换后的概率密度函数是一个均匀分布,对于图像来说,就是每个灰度级概率都是相等的,达到了我们的目的。

% 对图像进行直方图均衡化操作增加对比度
clear all;
close all;
F=imread('1.jpg');
Y = F(:,:,1);             %获得图像的三个通道的灰度值
Cb = F(:,:,2);
Cr = F(:,:,3);
Y = histeq(Y);
Cb = histeq(Cb);
Cr = histeq(Cr);
F = cat(3,Y,Cb,Cr);
subplot(122);imshow(F);title('直方图均衡化后的图像'); 

%   对于彩色的图片来说,直方图均衡化一般不能直接对R、G、B三个分量分别进行上述的操作,而要将RGB转换成HSV来对V分量进行直方图均衡化的操作。

分析

原文:http://blog.csdn.net/wendy709468104/article/details/8770919

有两个问题比较难懂,一是为什么要选用累积分布函数,二是为什么使用累积分布函数处理后像素值会均匀分布。

第一个问题。均衡化过程中,必须要保证两个条件:①像素无论怎么映射,一定要保证原来的大小关系不变,较亮的区域,依旧是较亮的,较暗依旧暗,只是对比度增大,绝对不能明暗颠倒;②如果是八位图像,那么像素映射函数的值域应在0和255之间的,不能越界。综合以上两个条件,累积分布函数是个好的选择,因为累积分布函数是单调增函数(控制大小关系),并且值域是0到1(控制越界问题),所以直方图均衡化中使用的是累积分布函数。

第二个问题。累积分布函数具有一些好的性质,那么如何运用累积分布函数使得直方图均衡化?比较概率分布函数和累积分布函数,前者的二维图像是参差不齐的,后者是单调递增的。直方图均衡化过程中,映射方法是
在这里插入图片描述
其中,n是图像中像素的总和, n j n_j 是当前灰度级的像素个数,L是图像中可能的灰度级总数。

来看看通过上述公式怎样实现的拉伸。假设有如下图像:
在这里插入图片描述
得图像的统计信息如下图所示,并根据统计信息完成灰度值映射:
在这里插入图片描述
映射后的图像如下所示:
在这里插入图片描述

以上就是直方图映射均衡化的步骤,当然还有一些基于此的更优算法,比如Photoshop中的方法.

算法原理

原文:https://blog.csdn.net/zrongh/article/details/7302816

直方图均衡化算法分为三个步骤,第一步是统计直方图每个灰度级出现的次数,第二步是累计归一化的直方图,第三步是计算新的像素值。

第一步:

    for(i=0;i<height;i++){
       for(j=0;j<width;j++){
          n[s[i][j]]++;
       }
    }

    for(i=0;i<L;i++){

        p[i]=n[i]/(width*height);

    }

这里,n[i]表示的是灰度级为i的像素的个数,L表示的是最大灰度级,width和height分别表示的是原始图像的宽度和高度,所以,p[i]表示的就是灰度级为i的像素在整幅图像中出现的概率(其实就是p[]这个数组存储的就是这幅图像的归一化之后的直方图)。

第二步:

    for(i=0;i<=L;i++){
       for(j=0;j<=i;j++){
          c[i]+=p[j];
       }
    }
c[ ]这个数组存储的就是累计的归一化直方图。

第三步:

    max=min=s[0][0];
    for(i=0;i<height;i++){
       for(j=0;j<width;j++){
           if(max<s[i][j]){

               max=s[i][j];

           }else if(min>s[i][j]){

               min=s[i][j];

           }
       }
    }
找出像素的最大值和最小值。
    for(i=0;i<height;i++){
       for(j=0;j<width;j++){
          t[i][j]=c[s[i][j]]*(max-min)+min;
      }
    }

t[ ][ ]就是最终直方图均衡化之后的结果。

对于彩色的图片来说,直方图均衡化一般不能直接对R、G、B三个分量分别进行上述的操作,而要将RGB转换成HSV来对V分量进行直方图均衡化的操作。

附上灰度图片直方图:

原文:https://blog.csdn.net/xiajun07061225/article/details/6910129

%直方图均衡化
I = imread('rice.png');
[height,width] = size(I);
figure
subplot(221)
imshow(I)%显示原始图像
subplot(222)
imhist(I)%显示原始图像直方图
 
%进行像素灰度统计;
NumPixel = zeros(1,256);%统计各灰度数目,共256个灰度级
for i = 1:height
    for j = 1: width
        NumPixel(I(i,j) + 1) = NumPixel(I(i,j) + 1) + 1;%对应灰度值像素点数量增加一
    end
end
%计算灰度分布密度
ProbPixel = zeros(1,256);
for i = 1:256
    ProbPixel(i) = NumPixel(i) / (height * width * 1.0);
end
%计算累计直方图分布
CumuPixel = zeros(1,256);
for i = 1:256
    if i == 1
        CumuPixel(i) = ProbPixel(i);
    else
        CumuPixel(i) = CumuPixel(i - 1) + ProbPixel(i);
    end
end
%累计分布取整
CumuPixel = uint8(255 .* CumuPixel + 0.5);
%对灰度值进行映射(均衡化)
for i = 1:height
    for j = 1: width
        I(i,j) = CumuPixel(I(i,j)+1);
    end
end
 
subplot(223)
imshow(I)%显示原始图像
subplot(224)
imhist(I)%显示原始图像直方图
发布了66 篇原创文章 · 获赞 3 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/djfjkj52/article/details/104501356
今日推荐