原文:图像滤镜艺术---(Nostalgla Filter)老照片滤镜

(Nostalgla Filter)老照片滤镜

Nostalgla Filter主要是通过算法来模拟一种复古,陈旧的照片风格,以此来达到新照片显示老照片的效果。目前这个算法有很多,本文在这里介绍一种更逼真,效率更高的新算法:
1,老照片一般都具有泛黄的纸张特征,这一点,我们构建一张暗黄色的地板图层A:RGB(200,120,10);
2,老照片还具有一些裂纹特征,当然,并非所有老照片都这样,这里添加裂纹特征,更形象更逼真,因此,我们这里可以使用PS构建一张裂纹模板B,如下图所示:

3,将原始照片C进行灰度化处理得到灰度图D,这里可以使用最简单的灰度公式:
Gray = (R + G + B) / 3;
4,将D与A进行柔光操作,得到图E,柔光算法如下:
int ModeSmoothLight(int basePixel, int mixPixel)
{
int res = 0;
res = mixPixel > 128 ? ((int)((float)basePixel + ((float)mixPixel + (float)mixPixel - 255.0f) * ((Math.Sqrt((float)basePixel / 255.0f)) * 255.0f - (float)basePixel) / 255.0f)) :
((int)((float)basePixel + ((float)mixPixel + (float)mixPixel - 255.0f) * ((float)basePixel - (float)basePixel * (float)basePixel / 255.0f) / 255.0f));
return Math.Min(255, Math.Max(0, res));
}

5,将E与B进行柔光操作得到最后的效果图F;
以上就是老照片滤镜的算法实现了,算法比较简单,但是效果很不错!
核心代码如下:
private Bitmap NostalglaFilterProcess(Bitmap src,Bitmap mask)
{
Bitmap dst = new Bitmap(src);
int w = dst.Width;
int h = dst.Height;
BitmapData maskData = mask.LockBits(new Rectangle(0, 0, w, h), ImageLockMode.ReadWrite, PixelFormat.Format32bppArgb);
BitmapData srcData = dst.LockBits(new Rectangle(0, 0, w, h), ImageLockMode.ReadWrite, PixelFormat.Format32bppArgb);
byte* p = (byte*)srcData.Scan0;
byte* pMask = (byte*)maskData.Scan0;
int offset = srcData.Stride - w * 4;
int b = 10, g = 130, r = 200, gray = 0;
for (int j = 0; j < h; j++)
{
for (int i = 0; i < w; i++)
{
gray = (p[0] + p[1] + p[2]) / 3;
b = ModeSmoothLight(gray, b);
g = ModeSmoothLight(gray, g);
r = ModeSmoothLight(gray, r);
p[0] = (byte)ModeSmoothLight(b,pMask[0]);
p[1] = (byte)ModeSmoothLight(g, pMask[1]);
p[2] = (byte)ModeSmoothLight(r, pMask[2]);
p += 4;
pMask += 4;
}
p += offset;
pMask += offset;
}
dst.UnlockBits(srcData);
mask.UnlockBits(maskData);
return dst;
}

效果图如下:

原图

老照片滤镜效果图

最后放上一个完整C#程序DEMO的下载地址:http://www.zealpixel.com/thread-69-1-1.html

图像滤镜艺术---(Nostalgla Filter)老照片滤镜相关推荐

  1. 图像特效---(Nostalgla Filter)老照片滤镜

    (Nostalgla Filter)老照片滤镜 Nostalgla Filter主要是通过算法来模拟一种复古,陈旧的照片风格,以此来达到新照片显示老照片的效果.目前这个算法有很多,本文在这里介绍一种更 ...

  2. 图像滤镜艺术---(Lightleaks Filter)漏光滤镜

    原文:图像滤镜艺术---(Lightleaks Filter)漏光滤镜 (Lightleaks Filter)漏光滤镜 漏光拍摄其实就是一种摄影手法,最初是因为强烈光照导致相片交卷的过分曝光,最终在成 ...

  3. 图像滤镜艺术---(Sketch Filter)素描滤镜

    (Sketch Filter)素描滤镜 素描滤镜的实现方法比较简单,这里我们直接写出算法过程如下: 1,对原图S进行去色命令得到灰度图A: 2,对A进行反色得到图像B: 3,对B进行高斯模糊得到图C: ...

  4. 图像滤镜艺术---(Punch Filter)交叉冲印滤镜

    原文: 图像滤镜艺术---(Punch Filter)交叉冲印滤镜 (Punch Filter)交叉冲印滤镜 本文介绍一种交叉冲印效果的代码实现,至于原理,不在累赘,直接看代码: int f_TPun ...

  5. c实现 图像dither算法_Atitit (Sketch Filter)素描滤镜的实现  图像处理  attilax总结...

    Atitit (Sketch Filter)素描滤镜的实现  图像处理attilax总结 Sch lg java d sketch filter aigo se ,ma sinsho ..byedu ...

  6. 图像滤镜艺术---Wave滤镜

    图像滤镜艺术---Wave滤镜 原文:图像滤镜艺术---Wave滤镜 Wave Filter水波滤镜 水波滤镜是通过坐标变换来模拟水波效果,使图像呈现出水波的特效.这个滤镜有一个可调参数:水波的扭曲程 ...

  7. 图像滤镜艺术---图像滤镜晕影调节算法研究

    原文:图像滤镜艺术---图像滤镜晕影调节算法研究 本文对滤镜中常见的晕影,晕角效果的实现做了研究,具体如下: 1 晕影调整算法 所谓晕影就是给图像四个角添加暗影效果,这暗影向图像中心逐渐淡化.我们使用 ...

  8. 图像滤镜艺术---PS图层混合模式之明度模式

    图像滤镜艺术---PS图层混合模式之明度模式 本文将介绍PS图层混合模式中比较复杂 的"明度"模式的算法原理及代码实现内容. 说到PS的图层混合模式,计算公式都有,具体代码实现也能 ...

  9. 图像滤镜艺术--编码基础(Photoshop基础变换的代码实现)

    原文:图像滤镜艺术--编码基础(Photoshop基础变换的代码实现) 自从上一篇博客写完之后,到现在已经有段时间了,这段时间不是不想接着写,只是想做的更好了在写出来给大家看呵呵. 今天,我将给大家介 ...

最新文章

  1. LeetCode简单题之将找到的值乘以2
  2. python threading join_Python中threading模块join函数用法实例分析
  3. php中显示不出来,图片显示不出来,但是数据库里有显示
  4. JAVA编程相关:eclipse如何导入已有工程
  5. 观察者模式与发布/订阅模式的区别
  6. linux安装文泉字体,Linux_Linux系统下的Emacs字体配置,安装步骤:   1、安装文泉 - phpStudy...
  7. Jmeter测试post请求的接口(webapi),json格式
  8. bitset优化传递闭包
  9. matlab:正态分布的概率密度图形
  10. 持续近40年的战争 X86系列CPU大史记
  11. 计算机edp测试是什么测试,五、信息工具--(一)EDP:电子数据处理
  12. java实现随机游走算法_java – 简单的2D随机游走
  13. 计算机硬件希沃课件,希沃课件怎么转为ppt?
  14. Mysql onlineddl vs gh-ost
  15. [初级前端工程师]网络相关知识
  16. apt-get install netstat失败
  17. 【vue】vue实现用户长时间不操作,提示用户登录已过期重新登录
  18. hihocoder买零食
  19. 英语Canutillos祖母绿canutillos单词
  20. Solr 7 - 中文分词、数据导入、查询 基本使用篇

热门文章

  1. 五步就让你成为一名很出色的程序员!
  2. 赔偿 525 万?联想前副总裁跳槽小米仲裁案后续,常程不服提起诉讼
  3. Android上传队列使用
  4. 知识产权基础(上、下)
  5. Spring MVC 原理探秘 - 一个请求的旅行过程
  6. iOS下载历史版本APP
  7. SQL server2008 无法启动调试存储过程
  8. CSS实现自适应浏览器宽度的正方形
  9. 时钟同步和时钟修正的小技巧
  10. 聊聊数据挖掘竞赛中的套路与深度学习的局限