您的位置:首页 > 其它

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

2010-08-14 15:25 597 查看
5.1 反色
1.定义: 反色(invert)就是形成底片效果。
2.用途: 当黑色区域占比较大区域时,可以利用反色,节省打印的墨。
3.做法:反色的实际含义是将R、G、B值反转。
1)真彩图。真彩图不带调色板,每个象素用3个字节,表示R、G、B三个分量。所以处理很简单,把反转后的R、G、B值写入新图即可。
2)带调色板的彩色图。只需要将调色板中的颜色反转,形成新调色板,而位图数据不用动,就能够实现反转。
3)灰度图,是一种特殊的伪彩色图,所以反转的处理和上面讲的一样。
注:二值图不一定是黑白图,其实在调色板中是黑色和蓝色两种,但通常情况下是黑白图。

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

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

2.做法:
1)真彩图。根据R、G、B的值求出Y值后,将R、G、B值都赋值成Y,写入新图即可。由于改成灰度图后,是必须带一个256色的调色板,并把图像中的内容改变为对调色板的索引值。
2)彩色图。我们只需要将调色板中的彩色变成灰度,形成新调色板,而位图数据不用动,就可以了。

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

2.做法:
1)准备长度为4096的数组——用于存储4096种颜色的信息;
2)统计这4096种颜色在图中的使用频率。对图中的每一个象素,取R、G、B的最高四位,拼成一个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. 低对比度:即灰度都挤在一起,没有拉开。假设有一幅图,由于成象时光照不足,使得整幅图偏暗(例如,灰度范围从0到63);或者成象时光照过强,使得整幅图偏亮(例如,灰度范围从200到255)。
2. 灰度扩展:把你所感性趣的灰度范围拉开,使得该范围内的象素,亮的越亮,暗的越暗。

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

gold表示原图的灰度值,gnew表示gold经过对比度扩展后得到了新的灰度值。g1old和g2old表示原图中要进行对比度扩展的范围,g1new和g2new表示对应的新值。
我们假设a=c,这样,我们只要给出b,g1old和g2old,就可以求出
a=(255-b(g2old-g1old))/(255-(g2old-g1old))
要注意的是,给出的三个参数必须满:(1) b*(g2old-g1old)<=255;(2) (g2old-g1old)<=255。

5.5 削波
1. 定义:是对比度扩展的特例,即a=c=0。
2. 做法:只要给出g1old和g2old两个值,运用方程: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出现的次数与总的点数之比;
2)i从1开始,令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结果,调整图像实际数据内的调色板索引值。

终于找到自己感兴趣图像处理出入了,嘻嘻,就是做电影特效处理!真的很帅也,有时间去找点这方面的资料看看,加油~
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: