飞行石

在早晨赖在被窝里不出来
就是我在冬天里最大的幸福!

导航

2005-11-14

我的直接导师老大找我,让我帮他改进一下他的一个软件。其中有这么一个类似Photoshop的描边的插件的功能:
查找指定的轮廓,进行描边,我随便拉了一个进行测试:
o_ColorFile.jpg        o_GrayFile.jpg
左图是原始图像,右图是经过一个算法处理后的图像;导师说按照这个算法处理(必须转换成灰度图象)彩色信息就丢失了,希望我能通过原始图像把图像彩色信息还原上去,这样他的这个算法就比较完美了。我的工作也很简单,仅仅是把HSB和RGB转换一下,第一次研究了一下GDI+,写一个.NET 的WinForm,然后扫描像素进行叠加。处理完毕后就是这个样子:
o_CSIEFilled_-1.jpg
这个东东有什么功能我还具体说不清楚,主要是老大说得还不太理解,慢慢研究吧。

我的处理流程:
1.读取原图像和处理后的灰度图象,转换成位图格式;
2.因为两幅图按照规范是一样大小,我就遍历灰度图象的每一个像素;
3.同一座标上从原图读取RGB信息,转换成HSB信息,取出色环(Hue)和亮度(Light)数值,丢掉饱和度(Saturation)值,从灰度图象中读取饱和度值。(.NET Framework中我没有找到HSB到RGB的转换,便把java里的Hsb2Rgb函数拿过来用了,没学过色彩,不清楚原理,不过java的代码稍作修改便可使用,结果经过暴力测试也完全正确。)
4.将读出的HSB合并,输出RGB,生成新的一幅位图,保存一下,完毕。
算法很烂,我甚至连优化性能的锁定内存都没有使用,老奔上运行一次可以消耗30秒左右时间,不过嘛,在老大的机子上跑只需要10秒不到,基本满意。不过可以完成任务了。

posted on 2005-11-14 11:14  飞行石  阅读(635)  评论(1编辑  收藏  举报