基本所有图像美化app都有该特效,有的app叫晕影效果,有的app叫暗角效果,其实就是以图像为中心,提高图像四角的亮度或者降低亮度。为图像四角提高亮度的不多,更多的还是给图像增加暗角效果,以突出图像主体。 尤其是很多lomo滤镜,基本都会加一个暗角。那么暗角是怎么实现的呢,看似很简单,但真做到ps般色调过渡自然、平滑,看着舒服,还是需要一番计算与调试的。算法总体上没有复杂原理与计算,看代码基本就明白了。
       下面是相关示例代码(亮角: strength范围为[0.0f, 1.0f], 暗角: strength范围为[-1.0f, 0.0f]):
void ImageVignetting(BMPINFO *pSrcBitmap, float strength)
{int width = pSrcBitmap->lWidth;int height = pSrcBitmap->lHeight;float radio = 0.0;float maxLen = (float)MAX(width, height);float cx = maxLen * 0.5f;float cy = maxLen * 0.5f;float maxDist = cx*cx + cy*cy;uchar* pSrcData = pSrcBitmap->pPlane[0];if (strength > 0.0f){// 亮角for (int i = 0; i < height; i++){for (int j = 0; j < width; j++, pSrcData += 4){float nx = (float)maxLen * j / width;float ny = (float)maxLen * i / height;float curDist = (nx - cx)*(nx - cx) + (ny - cy)*(ny - cy);radio = curDist / maxDist;// radio *= radio;radio *= strength;pSrcData[BLUE] = (uchar)CLAMP0255(pSrcData[BLUE]*(1.0f - radio) + SCREEN_XY(pSrcData[BLUE], 230)*radio);pSrcData[GREEN] = (uchar)CLAMP0255(pSrcData[GREEN]*(1.0f - radio) + SCREEN_XY(pSrcData[GREEN], 230)*radio);pSrcData[RED] = (uchar)CLAMP0255(pSrcData[RED]*(1.0f - radio) + SCREEN_XY(pSrcData[RED], 230)*radio);}}}else{// 暗角for (int i = 0; i < height; i++){for (int j = 0; j < width; j++, pSrcData += 4){float nx = (float)maxLen * j / width;float ny = (float)maxLen * i / height;float curDist = (nx - cx)*(nx - cx) + (ny - cy)*(ny - cy);radio = curDist / maxDist;// radio *= radio;radio *= strength;radio = 1.0f + radio;pSrcData[BLUE] = (uchar)CLAMP0255(pSrcData[BLUE]*radio);pSrcData[GREEN] = (uchar)CLAMP0255(pSrcData[GREEN]*radio);pSrcData[RED] = (uchar)CLAMP0255(pSrcData[RED]*radio);}}}
}

下面是效果图:
                                            

                                            

图像处理算法之图像暗角特效相关推荐

  1. [Python图像处理] 三十三.图像各种特效处理及原理万字详解(毛玻璃、浮雕、素描、怀旧、流年、滤镜等)...

    此文转载自:https://blog.csdn.net/Eastmount/article/details/111568397#commentBox 该系列文章是讲解Python OpenCV图像处理 ...

  2. [Python图像处理] 三十三.图像各种特效处理及原理万字详解(毛玻璃、浮雕、素描、怀旧、流年、滤镜等)

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

  3. 图像处理算法之变老特效

    用了美颜app,瞬间可以将自己变成脸小.大眼.白肤的女神.男神.那有没有人想看看自己一脸皱纹的样子呢?好奇心大家都应该有,不过没人想变老,虽然这个现实每个人都要面对.app store上有相关应用,曾 ...

  4. C6000 DSP技术深度探索-图像处理算法仿真到硬件实现踩过的那些坑

    C6000 DSP技术深度探索-图像处理算法仿真到硬件实现踩过的那些坑 写在前面 图像处理算法-仿真篇 DSP硬件移植篇-挖坑篇 DSP硬件移植篇-坑的种类 写在前面 时间如白马过隙,今天登录CSDN ...

  5. JavaScript实现图像处理----resizeImageWidth调整图像宽度算法(附完整源码)

    JavaScript实现图像处理----resizeImageWidth调整图像宽度算法(附完整源码) imageData.js完整源代码 resizeImageWidth.js完整源代码 image ...

  6. 基于L0范数平滑的图像漫画特效生成算法

           图像漫画特效算法,主要思路可以分两部分,第一,简化图像,即去除图像细节,仅保留图像主要信息,第二,生成合适的边缘线条,最后将两者合成即可,合成其实就是将两者简单一乘即可.在简化图像步骤, ...

  7. 生成模型--GAN用于图像漫画特效算法

    图像漫画特效算法   这种风格迁移的算法都快要被GAN统治了 . 主要思路   可以分两部分:   1)简化图像,即去除图像细节,仅保留图像主要信息:   在简化图像步骤,除了meanshift算法外 ...

  8. matlab调用海康威视摄像头_招聘|海康威视招聘一批算法、图像等AI工程师

    原标题:招聘|海康威视招聘一批算法.图像等AI工程师 全球人工智能 文章参考:海康威视 算法工程师 工作地点:杭州薪资:18-35k 经验:不限 学历:硕士及以上 职位描述: 1. 负责公司视觉最新视 ...

  9. Java图片gh颜色渐变_强大的Java图像滤镜特效类库Java Image Filters

    Java Image Filters是一款基于Java的图像处理类库,特别是在图像滤镜特效方面,Java Image Filters简直就是强大到天衣无缝.它几乎提供了PS上大部分的图像特效.比如反色 ...

最新文章

  1. MATLAB GUI界面显示不全的解决办法
  2. js 判断手机横竖屏的实现方法(不依赖任何其他库)
  3. php内置函数和扩展,PHP 内置函数strlen 和mbstring扩展函数mb_strlen的区别
  4. Codeforces 845 C. Two TVs 思路:简单贪心算法
  5. cnil在python_在Python中匹配组
  6. 单线程的Redis为什么却能支撑高并发?
  7. 轻量级数据sqlite的C++调用示例
  8. 庆祝喜提13337000编号,我悄悄把老板的Windows命令行设置成了这样
  9. java到底是值传递还是引用传递?
  10. php tp3.2 去重方法,thinkPHP框架整合tcpdf插件操作示例
  11. Prometheus 监控 nginx
  12. CleanMyMac X2021专业苹果电脑系统优化工具
  13. 如果计算机是中国人发明的,那编程代码很可能就应该这样写!
  14. 字符函数-(学习笔记)
  15. ax 2012 随笔
  16. SSIS数据转换器及字符转换器使用
  17. 多麦克风做拾音的波束_乱侃外设 篇四十二:一浪更比一浪强!HyperX Quadcast S 声浪加强版麦克风浅评...
  18. 普通台式机上Tesla M40显卡paddleGPU深度学习柯南的变身器上机体验
  19. UG/NX二次开发入门手册
  20. GitBlit使用说明书

热门文章

  1. linux小主机玩法,遗传算法有好多有趣的玩法,不只能用来凑论文
  2. http请求头中的host是什么意思
  3. 线扫相机DALSA-Image Format(读图格式设置)
  4. 互联网月饼大赏,你最喜欢哪家的?
  5. 植物大战僵尸:查找植物叠加种植CALL
  6. 马海峰,杨家海,计算机应用,杨家海
  7. [Java高级](二)泛型
  8. 嗨聊:移动社交区域化发展的新思路
  9. ff14注册完服务器可以转,FF14跨区角色转移试行规则公告 详细跨区转服问题答疑...
  10. 第一节、linux中安装redis(一)