您的位置:首页 > 其它

自己编码使用去色、曲线、色阶算法实现照片怀旧特效。

2013-12-06 10:43 288 查看
  天下文章一大抄,看你会抄不会抄,这个算法的初步雏形其实很简单,很多傻瓜级的软件业提供了相应的一键功能,比如美图秀秀。其实这就是个简单的调色功能,实现的方式五花八门,没有一个固定的标准,我们下面仅以几个开源的软件中的算法为例来说明实现过程。

第一的参考算法是来自Paint.net的,在专业的软件中,这个功能的英文一般称之为Sepia,在Paint.net中,这个算法实现的主要代码如下:

this.desaturate = new UnaryPixelOps.Desaturate();
this.levels = new UnaryPixelOps.Level(
ColorBgra.Black,
ColorBgra.White,
new float[] { 1.2f, 1.0f, 0.8f },
ColorBgra.Black,
ColorBgra.White);


即先去色,然后再执行色阶命令,似乎很简单,而我们先看看效果。

byte[] Table = {
0,0,0,
43,28,4,
57,35,5,
65,35,6,
66,36,7,
67,37,8,
68,38,9,
69,39,10,
70,40,11,
71,41,12,
72,42,13,
73,43,14,
74,44,15,
75,45,16,
76,46,17,
77,47,18,
78,48,19,
79,49,20,
80,50,21,
81,51,22,
82,52,23,
83,53,24,
83,53,24,
84,54,25,
85,55,26,
86,56,27,
87,57,28,
88,58,29,
89,59,30,
90,60,31,
91,61,32,
92,62,33,
93,63,34,
94,64,35,
95,65,36,
96,66,37,
97,67,38,
98,68,39,
99,69,40,
100,70,41,
101,71,42,
102,72,43,
103,73,44,
104,74,45,
105,75,46,
106,76,47,
107,77,48,
107,77,48,
108,78,49,
109,79,50,
110,80,51,
111,81,52,
112,82,53,
113,83,54,
114,84,55,
115,85,56,
116,86,57,
117,87,58,
118,88,59,
119,89,60,
120,90,61,
121,91,62,
122,92,63,
123,93,64,
124,94,65,
125,95,66,
125,95,66,
126,96,67,
127,97,68,
128,98,69,
129,99,70,
130,100,71,
131,101,72,
132,102,73,
133,103,74,
134,104,75,
135,105,76,
136,106,77,
137,107,78,
138,108,79,
139,109,80,
140,110,81,
141,111,82,
142,112,83,
143,113,84,
144,114,85,
145,115,86,
146,116,87,
147,117,88,
148,118,89,
149,119,90,
150,120,91,
151,121,92,
152,122,93,
153,123,94,
154,124,95,
155,125,96,
156,126,97,
157,127,98,
158,128,99,
159,129,100,
160,130,101,
161,131,102,
162,132,103,
163,133,104,
164,134,105,
165,135,106,
166,136,107,
167,137,108,
168,138,109,
169,139,110,
170,140,111,
171,141,112,
172,142,113,
173,143,114,
174,144,115,
175,145,116,
176,146,117,
177,147,118,
178,148,119,
179,149,120,
180,150,121,
181,151,122,
182,152,123,
183,153,124,
184,154,125,
185,155,126,
186,156,127,
187,157,128,
187,157,128,
188,158,129,
189,159,130,
190,160,131,
191,161,132,
192,162,133,
193,163,134,
194,164,135,
195,165,136,
196,166,137,
197,167,138,
198,168,139,
199,169,140,
200,170,141,
201,171,142,
202,172,143,
203,173,144,
204,174,145,
205,175,146,
206,176,147,
207,177,148,
208,178,149,
209,179,150,
210,180,151,
211,181,152,
212,182,153,
213,183,154,
214,184,155,
215,185,156,
216,186,157,
217,187,158,
218,188,159,
219,189,160,
220,190,161,
221,191,162,
222,192,163,
223,193,164,
224,194,165,
225,195,166,
226,196,167,
227,197,168,
228,198,169,
229,199,170,
230,200,171,
231,201,172,
232,202,173,
233,203,174,
234,204,175,
235,205,176,
236,206,177,
237,207,178,
238,208,179,
239,209,180,
240,210,181,
241,211,182,
242,212,183,
243,213,184,
244,214,185,
245,215,186,
246,216,187,
247,217,188,
248,218,189,
249,219,190,
250,220,191,
251,221,192,
252,222,193,
253,223,194,
254,224,195,
255,225,196,
255,225,196,
255,225,196,
255,225,196,
255,225,196,
255,225,197,
255,225,197,
255,225,197,
255,225,197,
255,226,198,
255,226,198,
255,226,198,
255,226,198,
255,226,198,
255,226,199,
255,226,199,
255,226,199,
255,226,199,
255,226,199,
255,227,200,
255,227,200,
255,227,200,
255,227,200,
255,227,200,
255,227,201,
255,227,201,
255,227,201,
255,227,201,
255,227,201,
255,228,202,
255,228,202,
255,228,202,
255,228,202,
255,228,202,
255,228,202,
255,228,203,
255,228,203,
255,228,203,
255,228,203,
255,228,203,
255,229,204,
255,229,204,
255,229,204,
255,229,204,
255,229,204,
255,229,204,
255,229,205,
255,229,205,
255,229,205,
255,229,205,
255,229,205,
255,230,205,
255,230,205,
255,231,205,
255,231,209,
255,233,214,
255,233,217,
255,242,233,
255,255,255
};


View Code
  你如果在网络上搜索PS+老照片效果,你会发现这其实只是处理过程中占有比例很小的一部分,但是这一部分却对最终的效果起到了铺垫的作用。也就是说,仅仅通过这一过程,只是获得老照片效果的基础,一个出色的自动老照片滤镜还需要更多的其他处理,比如老照片必然存在一些皱褶,边缘部位很有可能有磨损,图片周边一般比较偏暗等等。这些过程的实现需要较强的编码能力和创造力,在GIMP中存在一个old photo插件,可以实现较为出色的效果,并且这个是个开源的软件,有想开发此类算法的朋友应该去参考下。

相关程序下载: http://files.cnblogs.com/Imageshop/OldPhoto.rar

*********************************作者: laviewpbt 时间: 2013.12.6 联系QQ: 33184777 转载请保留本行信息************************
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: