数字图像处理编成入门笔记——第五章直方图修正和彩色变换

5.1 反色

1.定义: 反色(invert)就是形成底片效果。

2.用途: 当黑色区域占比较大区域时,可以利用反色,节省打印的墨。

3.做法:反色的实际含义是将RGB值反转。

1)真彩图。真彩图不带调色板,每个象素用3个字节,表示RGB三个分量。所以处理很简单,把反转后的RGB值写入新图即可。

2)带调色板的彩色图。只需要将调色板中的颜色反转,形成新调色板,而位图数据不用动,就能够实现反转。

3)灰度图,是一种特殊的伪彩色图,所以反转的处理和上面讲的一样。

注:二值图不一定是黑白图,其实在调色板中是黑色和蓝色两种,但通常情况下是黑白图。

 

5.2 彩色图转灰度图

1.定义:YUV的颜色表示方法,在这种表示方法中,Y分量的物理含义就是亮度,它含了灰度图的所有信息,只用Y分量就完全能够表示出一幅灰度图来。

我们利用上式,根据RGB的值求出Y值后,将RGB值都赋值成Y,就能表示出灰度图来,这就是彩色图转灰度图的原理。

 

2.做法:

1)真彩图。根据RGB的值求出Y值后,将RGB值都赋值成Y,写入新图即可。由于改成灰度图后,是必须带一个256色的调色板,并把图像中的内容改变为对调色板的索引值。

2)彩色图。我们只需要将调色板中的彩色变成灰度,形成新调色板,而位图数据不用动,就可以了。

 

 

5.3 真彩图转256色图

1.定义:真彩图能表示2^24种颜色,就是要从中挑选出256种颜色。

 

2.做法:

1)准备长度为4096的数组——用于存储4096种颜色的信息;

2)统计这4096种颜色在图中的使用频率。对图中的每一个象素,取RGB的最高四位,拼成一个12位的整数,该整数值对应的数组元素加1

3)排除数组值为0的元素;

4)根据数组值从大到小排序;

5)取前256种颜色的数组信息,作为调色板上的256种颜色;

6)将图像内容数据改写为调色板的索引值。对图中每个像素取R,G,B的高4位,拼成一个12位整数,到调色板中查找,如果存在,则填入对应的索引值;如果不存在,则利用最小平方误差在调色板中查找替换颜色的索引值。

注:最小平方误差,即:(red1 – red2^2+green1 – green2^2+blue1 – blue2^2中最小的一个。可以先对第256种以后的颜色计算替换颜色索引值,再更改图像内容数据。

 

5.4 对比度扩展

1. 低对比度:即灰度都挤在一起,没有拉开。假设有一幅图,由于成象时光照不足,使得整幅图偏暗(例如,灰度范围从063);或者成象时光照过强,使得整幅图偏亮(例如,灰度范围从200255)

2. 灰度扩展:把你所感性趣的灰度范围拉开,使得该范围内的象素,亮的越亮,暗的越暗。

 

3. 做法:根据以下公式计算出新的灰度值:

  

gold表示原图的灰度值,gnew表示gold经过对比度扩展后得到了新的灰度值。g1oldg2old表示原图中要进行对比度扩展的范围,g1newg2new表示对应的新值。

我们假设a=c,这样,我们只要给出bg1oldg2old,就可以求出

a=(255-b(g2old-g1old))/(255-(g2old-g1old))

要注意的是,给出的三个参数必须满:(1) b*(g2old-g1old)<=255(2) (g2old-g1old)<=255

 

5.5 削波

1. 定义:是对比度扩展的特例,即a=c=0

2. 做法:只要给出g1oldg2old两个值,运用方程:b(g2old-g1old)=255计算出b值,并带入上节的公式中求得新图的灰度值即可。

 

5.6 阈值化

1. 定义:是削波的特例,即g1old=g2old

2. 做法:阈值就象个门槛,比它大就是白,比它小就是黑。

3. 作用:是一种常用的将图像转换成黑白二值图的方法。

 

5.7 灰度窗口变换

1 .定义:灰度窗口变换是将某一区间的灰度级和其它部分(背景)分开。

2. 种类:

1)清除背景:把不在灰度窗口范围内的象素都赋值为0,在灰度窗口范围内的象素都赋值为255,这也能实现灰度图的二值化;

2)保留背景:把不在灰度窗口范围内的象素保留原灰度值,在灰度窗口范围内的象素都赋值为255

3. 应用领域:电影特技处理(例如:“蓝幕”技术)。

 

5.8 灰度直方图统计

1.定义:用来统计图像灰度分布情况。,图中的横座标表示灰度值,纵座标表示该灰度值出现的次数(频率)

 

5.9 灰度直方图均衡化

1. 直方图修正,就是通过一个灰度映射函数Gnew=F(Gold),将原灰度直方图改造成你所希望的直方图。

2. 直方图均衡化是一种最常用的直方图修正。它是把给定图象的直方图分布改造成均匀直方图分布。直观地讲,直方图均衡化导致图象的对比度增加。//??感觉像降低对比度。

3. 做法:

1用一个数组s记录Pi分布的概率,即灰度i出现的次数与总的点数之比;

2i1开始,令s[i]=s[i]+s[i-1]

3)用一个数组L记录新的调色板索引值,即令L[i]=s[i]×(10-1)

4)计算新调色板的灰度值。

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

       Gray=(int)(i*255.0/(EquaScale-1));   //??超级不理解为什么是这样算的。

… …

5)通过数组L结果,调整图像实际数据内的调色板索引值。

 

  终于找到自己感兴趣图像处理出入了,嘻嘻,就是做电影特效处理!真的很帅也,有时间去找点这方面的资料看看,加油~

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章