QQ登录

只需一步,快速开始

登录 | 立即注册 | 找回密码
微像素首页 图像处理 查看内容
订阅

文章

图像算法研究---索引图像旋转缩放锯齿问题

发表时间:2016-7-17 13:18作者:天空之城 阅读(957) 评论: 0Trent来自: www.zealfilter.com

导读: 鉴于索引图像的旋转与普通图像旋转不同,无法使用普通图像的旋转方案,本文介绍了索引图像如何旋转的方法,并给出了相关的代码DEMO,跟大家分享一下!

所谓索引图像 ,就是一种把像素值直接作为RGB调色板下标的图像,把像素值直接映射成调色板中的数值。索引图像最多只包含256种颜色,这256中颜色分别对应0-255个值,也就是256种索引值,一般的真彩图像中的实际数据都是RGB或者RGBA数据,而索引图像中的实际数据则是256种索引值,每个索引值对应一种RGB或者RGBA颜色数据,这样讲,相信大家更容易理解一点。

介绍完了索引图像,来引入今天研究的问题。

今天的问题是:索引图像的旋转与缩放

我们以旋转为例,先看一下下面几组测试:


                                         1.索引图像                                                                                                    2.32位真彩图像

                                        3.索引图像旋转45度结果


                                     4.真彩图像旋转45度结果

大家可以看到,上面的测试中,使用相同的旋转算法,但是索引图旋转后明显出现了锯齿现象。

也许你要说锯齿是因为旋转的插值算法问题造成的,这里可以告诉你,上面的测试都是在PS中进行的,使用的是双线性型插值算法。

现在我来解释出现上述结果的原因:

如果我们使用的是真彩图像,那么,图像实际数据是对应的RGBA的值,这样,我们使用插值的结果得到的也是与周围颜色相近的RGBA数据,因此,视觉上没什么差异,就像图4一样,旋转后跟旋转前的图2差不多;

如果我们使用的是索引图像,那么,图像实际数据是RGBA数据对应的索引值,这样,我们使用插值的结果得到的也是与周围索引值相近的一个索引值,注意,得到的是一个索引值,至于这个索引值对应的RGBA数据是不是与周围颜色相近,那我们就不得而知了,因此,也就出现了图3的结果,也就是说图3中,锯齿的地方,是因为插值得到的索引对应的颜色不是黑色,而是白色!

如果还不明白,我们说这样一个例子:

假如真彩图上有三个RGB数据:(200,200,200),P(R,G,B),(100,100,100),其中P是我们要插值得到的,这里我们使用平均法来计算P,那么我们得到的P应该是:

P(150,150,150),这个就是实际的RGB数据,也是我们看到的图像颜色;

假如索引图上有三个索引数据:200,P,100,这三个数据分别表示的是颜色RGB的索引,我们假设三个索引分别对应如下颜色:

200---RGB(200,200,200)

100---RGB(100,100,100)

150--RGB(255,255,255)

我们同样使用平均值法得到P:P=150,,没错,但是这里P对应的实际颜色的RGB值是(255,255,255),这个结果跟真彩图的结果(150,150,150)有着明显的颜色差异!

至此,相信大家已经很清楚了。

我们如何解决这个问题呢?

方案如下:

1,获取索引图像的调色板,也就是颜色表,这个表中记录了索引值与颜色值的对应关系;

2,按照这个颜色表,把索引图像转换为真彩图像;

3,对真彩图像进行缩放与旋转等操作;

4,按照哦1中的颜色表将真彩旋转结果转换为索引图像,这个结果即为所求。


在这个方案中,如果在步骤4中出现旋转之后的图像中的颜色值,在索引表中没有对应关系 ,那么,一般使用的是欧氏距离法,也就是计算当前颜色值与颜色表中 最接近(欧氏距离最小)的颜色值所对应的索引,以此索引作为结果索引即可。

这样就可以完美解决上述 问题了。最后给一个索引图旋转的DEMO,代码没有优化,只是说明而已:http://download.csdn.net/detail/trent1985/9527602


鲜花

握手

雷人

路过

鸡蛋
上一篇:图像基本变换---图像形态学算法(膨胀+腐蚀+开运算+闭运算)

最新评论

    联系我们
  • QQ:3243218172
  • 邮箱:3243218172@qq.com
  • QQ交流群:567648913
    手机扫描二维码