LOMO Filter

LOMO是一种概念,即强调感受、机缘,弱化摄影技巧,不确定性和随意性是LOMO最大特点。LOMO源于Lomography,LOMO相机,它原先是苏联的产物,由列宁格勒光学与机械联盟于1980年制造出品,是一台为了大众需求而制造的傻瓜相机。常见的lomo照片构图没有章法,色彩浓郁,焦点不实,曝光不准,晃动糊片也很普遍。
LOMO的风格多种多样,本文简单介绍一种风格。
具体算法实现如下:
1,原图A与原图使用“柔光”图层混合,得到图B,公式如下:
private 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)); 
}

2,B与一种自己设定的风格色(比如蓝色:R-200,G-37,B-11)进行“排除”图层混合,设定40%透明度,得到图C,具体公式如下:
private int ModeExclude(int basePixel, int mixPixel)
{
int res = 0;
res = (mixPixel + basePixel) - mixPixel * basePixel / 128;
return Math.Min(255, Math.Max(0, res));
}

3,选则一种暗角模板,与C进行“叠加”图层混合,得到最终的LOMO效果,当然,如果不喜欢暗角效果,此步骤可以忽略;
核心代码如下:
private Bitmap LOMOFilterProcess(Bitmap src)
{
Bitmap srcBitmap = new Bitmap(src);
Bitmap dst = new Bitmap(src);
int w = dst.Width;
int h = dst.Height;
BitmapData dstData = dst.LockBits(new Rectangle(0, 0, w, h), ImageLockMode.ReadWrite, PixelFormat.Format32bppArgb);
BitmapData srcData = srcBitmap.LockBits(new Rectangle(0, 0, w, h), ImageLockMode.ReadOnly, PixelFormat.Format32bppArgb);
byte* pSrc = (byte*)srcData.Scan0;
byte* pDst = (byte*)dstData.Scan0;
int offset = dstData.Stride - w * 4;
int r,g,b;
for (int j = 0; j < h; j++)
{
for (int i = 0; i < w; i++)
{
b = ModeSmoothLight(pSrc[0], pDst[0]);
g = ModeSmoothLight(pSrc[1], pDst[1]);
r = ModeSmoothLight(pSrc[2], pDst[2]);
b = ModeExclude(b, 80);
g = ModeExclude(g, 15);
r = ModeExclude(r, 5);
pDst[0] = (byte)b;
pDst[1] = (byte)g;
pDst[2] = (byte)r;
pDst[3] = (byte)255;
pSrc += 4;
pDst += 4;
}
pSrc += offset;
pDst += offset;
}
dst.UnlockBits(dstData);
srcBitmap.UnlockBits(srcData);
return dst;
}
效果图如下:

原图

LOMO Filter效果

程序demo: 点击打开链接

图像特效---LOMO Filter相关推荐

  1. 图像特效---(Sketch Filter)素描滤镜

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

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

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

  3. 图像特效---(Punch Filter)交叉冲印滤镜

    (Punch Filter)交叉冲印滤镜 本文介绍一种交叉冲印效果的代码实现,至于原理,不在累赘,直接看代码:  int f_TPunchFilter(unsigned char* srcData, ...

  4. python 画三角形matli_Python实现PS滤镜特效Marble Filter玻璃条纹扭曲效果示例

    本文实例讲述了Python实现PS滤镜特效Marble Filter玻璃条纹扭曲效果.分享给大家供大家参考,具体如下: 这里用 Python 实现 PS 滤镜特效,Marble Filter, 这种滤 ...

  5. 图像特效及滤镜算法汇总

    OpenCV 版:OpenCV 图像处理 PS 图像处理算法汇总 图层混合算法: PS图层混合算法之一(不透明度,正片叠底,颜色加深,颜色减淡) PS图层混合算法之二(线性加深,线性减淡,变亮,变暗) ...

  6. PHP图片处理库Grafika详细教程(2):图像特效处理模块

    该文章是接着上篇文章<PHP图片处理库Grafika详细教程(1):图像基本处理>,由于grafika功能太多,所以分开写,其他的点击这里 <1.图像基本处理> <2.图 ...

  7. PHP极其强大的图片处理库Grafika详细教程(2):图像特效处理模块

    接上篇: <1.图像基本处理> <2.图像特效处理模块> <3.图像属性处理> <4.图形绘制> 我们开门见山,直接继续上实例,详细了解点击上面链接 图 ...

  8. [Python图像处理] 二十五.图像特效处理之素描、怀旧、光照、流年以及滤镜特效

    该系列文章是讲解Python OpenCV图像处理知识,前期主要讲解图像入门.OpenCV基础用法,中期讲解图像处理的各种算法,包括图像锐化算子.图像增强技术.图像分割等,后期结合深度学习研究图像识别 ...

  9. [Python图像处理] 二十四.图像特效处理之毛玻璃、浮雕和油漆特效

    该系列文章是讲解Python OpenCV图像处理知识,前期主要讲解图像入门.OpenCV基础用法,中期讲解图像处理的各种算法,包括图像锐化算子.图像增强技术.图像分割等,后期结合深度学习研究图像识别 ...

  10. 用JavaScript实现的十个图像特效

    用JavaScript实现的十个图像特效 Reflex.js 此JavaScript,可以为你网页上的图像添加变形和反射的效果. 您可以调整反射,倾斜角度和边缘变形. 结果是这个样子. Curl.js ...

最新文章

  1. 关于如何使用机器学习来做异常检测的7个问题
  2. 设计师之歌 --【死了都要改】
  3. 改变Window下的习惯--认识Linux
  4. android中仿qq最新版抽屉,Android 自定义View实现抽屉效果
  5. [裴礼文数学分析中的典型问题与方法习题参考解答]4.3.23
  6. 开源CMS webEdition 6发布
  7. 磁盘阵列服务器Intel C610系列,超微6048R-E1CR36N 36盘位存储服务器 磁盘阵列
  8. GO 从零开始的语法学习二
  9. 下载HTMLTestRunner如何使用
  10. swift版的StringAttribute
  11. jquery remove()不兼容问题解决方案
  12. mysql innodb_file_format_innodb_file_format设置
  13. 杭电oj2035c语言答案,小白详细讲解快速幂--杭电oj2035-A^B
  14. 计算机网络零碎笔记:IP协议(一)
  15. VB6.0处理WPS个人免费版代码
  16. openwrt开发--驱动程序IPK包开发(GPIO控制)
  17. vue项目退出登录清除 store 数据
  18. 日历查询---在线阴阳历转换器
  19. 基于美国人口数据分析
  20. php deel views,视图 - Views

热门文章

  1. 先睹为快,Go2 Error 的挣扎之路
  2. SecureCRT键盘无法输入
  3. 【Tips】如何批量安装和导出Python项目的依赖库?
  4. 使用discuz搭建bbs论坛网站
  5. Kinect for Windows SDK v2.0 开发笔记 (七)语音识别(上)
  6. 【ORACLE】详解oracle数据库UTL_ENCODE包各个函数的模拟算法
  7. ewebeditor漏洞利用总结
  8. iOS 组件化加载本地 gif 图片
  9. 练气第一层 踏入计算机修真界
  10. axis webservice 实验