opencv基础篇 ——(十)非真实感渲染

        非真实感渲染(Non-Photorealistic Rendering, NPR)是指通过一系列图像处理技术,将真实感图像转换为具有特定艺术风格或视觉效果的图像,模拟绘画、素描、卡通等非现实主义表现手法。OpenCV 提供了一些内置函数来实现非真实感渲染,这些函数可以帮助开发者快速实现各种艺术风格化效果。以下是 OpenCV 中与非真实感渲染相关的几个关键函数及其介绍:

  1. cv::detailEnhance:

    • 用于增强图像的细节表现,通过结合空间域和平滑以及频率域滤波,选择性地增强特定频率范围内的图像成分,从而突出细节。适用于医学影像、遥感图像、艺术图像的细节增强,也可作为图像分析、识别、分割等后续算法的预处理步骤。
  2. cv::pencilSketch:

    • 将彩色图像转换为素描风格(铅笔画效果),生成包含线条图和着色图的双输出图像。通过色彩空间转换、亮度处理、色彩信息处理、色调映射和混合线条图与着色图等步骤,模拟铅笔素描的质感和阴影层次。适用于艺术效果生成、教育与演示、视觉特效等场景。
  3. cv::edgePreservingFilter:

    • 对图像进行边缘保持滤波处理,能够在平滑图像、减少噪声的同时,有效保护图像中的边缘信息不受破坏。支持基于递归或归一化卷积的滤波器,通过边缘检测、空间域平滑、频率域滤波、边缘恢复和逆变换等步骤实现。应用于图像降噪、图像美化、视频处理等场景,保持图像重要边缘特征的同时提升视觉质量。
  4. cv::stylization:

    • 将彩色图像转换为艺术风格化图像,模仿特定艺术风格(如油画、水彩画、素描等)。通过色彩空间转换、亮度处理、对比度与亮度调整、色彩信息处理和后处理等步骤,生成具有艺术风格的输出图像。常用于艺术效果生成、教育与演示、视觉特效,为用户提供一键转换照片为艺术风格的功能。

        除了上述直接相关的非真实感渲染函数外,OpenCV 还提供了众多基础图像处理功能,如滤波、形态学操作、色彩空间转换、直方图均衡化等,这些都可以作为非真实感渲染算法的组成部分或辅助手段。开发者可以根据实际需求,结合这些基础功能和特定的非真实感渲染函数,设计和实现复杂的图像风格转换算法。

        通过调用诸如 cv::detailEnhancecv::pencilSketchcv::edgePreservingFilter 和 cv::stylization 等函数,结合适当的参数调整,可以将普通照片或视频转化为具有绘画、素描、艺术风格等多种非真实感效果的图像,满足不同应用场景的需求。

detailEnhance

        用于增强图像的细节表现。

函数原型:

void cv::detailEnhance(InputArray src,OutputArray dst,float sigma_s,float sigma_r
);
  • float sigma_s: 空间高斯核的标准差。该参数控制对图像进行局部平滑处理的程度。较大的值会使图像更加平滑,减少噪声影响,但可能降低细节增强效果;较小的值则会保留更多细节,但可能导致噪声增加。通常选择在 1.0 到 5.0 的范围内。

  • float sigma_r: 频率域高斯核的标准差。该参数控制在频率域中对图像进行滤波的尺度。它决定了增强图像细节的频率范围。较小的值会增强低频细节,较大的值则会增强高频细节。通常选择在 0.0 到 1.0 的范围内。

功能描述:

cv::detailEnhance 函数通过结合空间域和频率域的处理来实现图像细节的增强。具体步骤如下:

  1. 空间域平滑:首先,对输入图像 src 进行局部平滑处理,通常使用高斯滤波器,其标准差由参数 sigma_s 控制。平滑操作有助于消除图像中的噪声和不相关细节,同时保留主要结构信息。

  2. 频率域处理:将平滑后的图像转换到频域(通常使用傅立叶变换),然后应用一个中心对称的高斯滤波器,其标准差由参数 sigma_r 控制。此步骤旨在选择性地增强特定频率范围内的图像成分,从而突出细节。低频部分通常对应图像的大尺度结构,而高频部分对应边缘、纹理等细微特征。

  3. 逆傅立叶变换:将处理后的频域图像转换回空间域,得到增强细节的中间结果。

  4. 细节对比度增强:最后,通过对原始图像 src 与增强细节的中间结果进行适当的组合(如相减、相除等操作),生成最终的细节增强输出图像 dst。这一过程增强了原始图像中被选择频率范围内的细节对比度,使得这些细节在输出图像中更为明显。

应用场景:

  • 图像增强:在医学影像、遥感图像、艺术图像等领域,通过提高图像细节清晰度,帮助观察者更好地识别和分析图像内容。

  • 图像预处理:作为图像分析、识别、分割等后续算法的预处理步骤,提升算法对图像细节特征的敏感度。

  • 视觉效果优化:在数字摄影、图像编辑、视频后期制作中,用于改善图像的整体观感,使图像看起来更清晰、细腻。

pencilSketch 

        用于将彩色图像转换为素描风格(铅笔画效果)的函数。

函数原型:

void cv::pencilSketch(InputArray src,OutputArray dst1,OutputArray dst2,float sigma_s,float sigma_r,float shade_factor
);

参数说明:

  • OutputArray dst1: 输出的素描线条图。通常是单通道 8-bit 灰度图像,表示铅笔线条的分布。

  • OutputArray dst2: 输出的素描着色图。表示铅笔着色的效果。

  • float sigma_s: 空间高斯核的标准差,用于控制线条图生成过程中的空间平滑程度。较大的值会导致更平滑的线条,较小的值则会产生更锐利、细节丰富的线条。通常取值范围为 0.0 到 10.0。

  • float sigma_r: 频率域高斯核的标准差,用于控制线条图生成过程中的频率域滤波尺度。它决定了保留哪些频率成分来形成线条。较小的值强调低频信息(大尺度结构),较大的值强调高频信息(细节)。通常取值范围为 0.0 到 0.5。

  • float shade_factor: 着色图的阴影因子,控制着色图的对比度和深浅。较大的值会使着色图更暗、对比度更高,模拟铅笔较重的涂抹效果;较小的值则会使着色图更亮、对比度更低,模拟轻柔的着色效果。通常取值范围为 0.0 到 1.0。

功能描述:

cv::pencilSketch 函数通过一系列图像处理步骤将输入的彩色图像转换为具有铅笔画风格的双输出图像:

  1. 色彩空间转换:将输入的彩色图像从 BGR(或 RGB)色彩空间转换到 LAB 色彩空间,以便分离颜色信息和亮度信息。

  2. 亮度处理

    • 线条图生成:对 LAB 色彩空间中的亮度分量 L 使用双边滤波器进行处理,以模拟铅笔线条的质感。双边滤波器结合了空间域和平滑以及像素相似性的考虑,能够在保持边缘的同时去除噪声。滤波参数由 sigma_s 和 sigma_r 控制。
    • 着色图生成:对亮度分量 L 进行对比度调整,使用 shade_factor 参数控制调整程度,生成具有不同阴影层次的着色图。
  3. 色彩信息处理:将处理后的亮度分量与原始色彩空间中的色彩信息(A、B 分量)重新组合,生成初步的素描着色图。

  4. 色调映射:对初步的素描着色图进行色调映射处理,进一步模拟铅笔画特有的色彩风格。

  5. 混合线条图与着色图:最后,将生成的线条图(dst1)与着色图(dst2)按一定方式叠加(如透明度混合),得到最终的铅笔素描效果图像。

应用场景:

  • 艺术效果生成:在图像编辑软件、社交媒体滤镜、艺术创作工具中,为用户提供一键转换照片为素描风格的功能。

  • 教育与演示:在绘画教学、设计草图展示、概念设计交流中,利用铅笔画风格简化复杂图像,突出轮廓和明暗关系。

  • 视觉特效:在电影、动画、游戏等多媒体制作中,为场景添加独特视觉风格或过渡效果。

edgePreservingFilter 

        用于对图像进行边缘保持滤波处理的函数。这种滤波方法能够在平滑图像并减少噪声的同时,有效地保护图像中的边缘信息不受破坏。

函数原型:

void cv::edgePreservingFilter(InputArray src,OutputArray dst,int flags = 1,float sigma_s = 60,float sigma_r = 0.4f
);

参数说明:

  • OutputArray dst: 输出图像,与输入图像具有相同的尺寸和类型。

  • int flags: 滤波器类型标志,可选值包括:

    • cv::RECURS_FILTER: 使用基于递归的滤波器。
    • cv::NORMCONV_FILTER: 使用基于归一化卷积的滤波器。
  • float sigma_s: 空间高斯核的标准差,控制在空间域上进行平滑的程度。较大的值会带来更强的平滑效果,但可能会牺牲一些边缘细节;较小的值则倾向于保留更多的细节,但可能无法充分抑制噪声。通常取值范围为 0.0 到几百之间。

  • float sigma_r: 频率域高斯核的标准差,控制在频率域上进行滤波的尺度。它决定了保留哪些频率成分来保护边缘。较小的值保留更多的高频成分,有利于边缘保持;较大的值保留更多的低频成分,有利于平滑图像。通常取值范围为 0.0 到 1.0。

功能描述:

cv::edgePreservingFilter 函数通过结合空间域和频率域的处理,实现对图像的平滑滤波,同时保持图像边缘的清晰度。具体流程可能因所选滤波器类型(由 flags 参数决定)而略有差异,但总体思路是:

  1. 边缘检测:计算输入图像的梯度或边缘强度,确定图像中潜在的边缘位置。

  2. 空间域平滑:对图像进行一定程度的空间域平滑处理,如使用高斯滤波器,参数由 sigma_s 控制。平滑操作旨在减少图像噪声和不必要的细节,但需避免模糊边缘。

  3. 频率域滤波:在频率域中对图像进行滤波,保留与边缘相关的高频成分,抑制其他非边缘区域的高频噪声。这一步通常涉及计算图像的傅立叶变换,然后应用一个中心对称的高斯滤波器,其标准差由参数 sigma_r 控制。

  4. 边缘恢复:根据之前计算的边缘信息,将平滑后的图像在边缘处进行修正,确保边缘保持清晰。具体方法取决于所选滤波器类型。

  5. 逆变换与输出:将处理后的频域图像转换回空间域,得到最终的边缘保持滤波输出图像 dst

应用场景:

  • 图像降噪:在图像预处理阶段,对含有噪声的图像进行平滑处理,同时保持图像的重要边缘特征,为后续的图像分析、识别或显示提供更高质量的数据。

  • 图像美化:在摄影后期、艺术渲染、用户界面设计等场景下,对图像进行平滑处理以获得更柔和的视觉效果,同时保持图像边缘的清晰度,避免过度模糊导致的失真。

  • 视频处理:在视频流处理中,对连续帧进行边缘保持滤波,既能平滑帧间噪声,又能保持动态边缘的连贯性,提升视频质量。

stylization 

        用于将彩色图像转换为艺术风格化图像的函数。它基于一种称为“图像风格化”的计算机视觉技术,旨在模仿特定艺术风格(如油画、水彩画、素描等)对输入图像进行非真实感渲染。

函数原型:

void cv::stylization(InputArray src,OutputArray dst,float sigma_s = 60,float sigma_r = 0.4f
);

参数说明:

  • OutputArray dst: 输出的艺术风格化图像,与输入图像具有相同的尺寸和类型。

  • float sigma_s: 空间高斯核的标准差,用于控制在空间域上进行平滑的程度。较大的值会带来更强的平滑效果,可能导致图像更抽象;较小的值则倾向于保留更多的细节,使风格化图像更接近原图。通常取值范围为 0.0 到几百之间。

  • float sigma_r: 频率域高斯核的标准差,控制在频率域上进行滤波的尺度。它决定了保留哪些频率成分来形成风格化效果。较小的值保留更多的高频成分,使图像边缘更锐利;较大的值保留更多的低频成分,使图像更平滑。通常取值范围为 0.0 到 1.0。

功能描述:

cv::stylization 函数通过一系列图像处理步骤将输入的彩色图像转换为具有艺术风格的输出图像:

  1. 色彩空间转换:将输入的彩色图像从 BGR(或 RGB)色彩空间转换到 LAB 色彩空间,以便分离颜色信息和亮度信息。

  2. 亮度处理

    • 空间域平滑:对 LAB 色彩空间中的亮度分量 L 使用双边滤波器进行处理,以模拟艺术作品中的平滑过渡和纹理。滤波参数由 sigma_s 控制。
    • 频率域滤波:在频率域中对亮度分量 L 进行滤波,保留与艺术风格相关的频率成分。滤波参数由 sigma_r 控制。
  3. 色彩信息处理:将处理后的亮度分量与原始色彩空间中的色彩信息(A、B 分量)重新组合,生成初步的艺术风格化图像。

  4. 后处理:可能包括色调映射、饱和度调整等额外步骤,以进一步优化艺术风格效果。

应用场景:

  • 艺术效果生成:在图像编辑软件、社交媒体滤镜、艺术创作工具中,为用户提供一键转换照片为艺术风格的功能。

  • 教育与演示:在绘画教学、设计草图展示、概念设计交流中,利用艺术风格化图像简化复杂图像,突出特定艺术手法或风格特征。

  • 视觉特效:在电影、动画、游戏等多媒体制作中,为场景添加独特视觉风格或过渡效果。

效果展示

  • 光线偏暗场景效果对比

  • 人物处理效果对比

  • 人像处理效果对比

总结:

        根据效果可以看出,detailEnhance对图像细节的突显比较明显,edgePreservingFilter 对人物的美白效果非常明显,pencilSketch生成素描画,stylization生成油画效果。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/660296.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

74、堆-数组中的第K个最大元素

思路&#xff1a; 直接排序是可以的&#xff0c;但是时间复杂度不符合。可以使用优先队列&#xff0c;代码如下&#xff1a; class Solution {public int findKthLargest(int[] nums, int k) {if (numsnull||nums.length0||k<0||k>nums.length){return Integer.MAX_VAL…

全域团购外卖SAAS系统是什么?

随着多家互联网平台的团购外卖板块逐渐稳定&#xff0c;不少人不再满足于只做1~2个平台的团购外卖服务商&#xff0c;想要拓宽业务范围。在此背景下&#xff0c;全域团购外卖SAAS应运而生&#xff0c;进一步推动了全域团购外卖的流行。 而所谓全域团购外卖&#xff0c;就是指所…

Android Perfetto 监控应用启动耗时

Perfetto 是一个 Google 开发的用于安卓系统性能监控和调试的工具&#xff0c;它旨在提供实时数据收集和可视化功能&#xff0c;帮助我们分析和优化应用程序的性能表现。Perfetto 可以捕获系统事件、CPU、内存、网络、GPU 等性能指标数据&#xff0c;并将其记录为轻量级的 Trac…

链表刷题集

文章目录 概要反转链表代码Python代码C 环形链表代码Python代码Java 小结 概要 这个主要记录下刷的一些题。 链表已经看过了&#xff0c;之前写了篇链表的文章&#xff0c;这一篇&#xff0c;写点跟链表有关的题。主要是leetcode上的。目的是熟悉下代码&#xff0c;代码这东西…

2024 JAVA Tinypng压缩图片,超级简单!!!

一、打开官网&#xff0c;注册账号&#xff0c;获取秘钥&#xff08;每个月500张免费&#xff09; 1.打开官网&#xff0c;注册账号 TinyPNG – Compress WebP, PNG and JPEG images intelligently 2.登录后&#xff0c;点击账号名字&#xff0c;找到如图所示 3.找到API&…

当众演讲技巧的方法有哪些(3篇)

当众演讲技巧的方法有哪些&#xff08;3篇&#xff09; 当众演讲技巧的方法有很多&#xff0c;下面我将分三篇来详细阐述其中的一些关键技巧&#xff1a; **篇&#xff1a;准备与开场技巧 充分准备&#xff1a;提前规划演讲内容&#xff0c;明确主题和目标&#xff0c;准备详…

螺旋角和导程、转位后的齿轮有什么关系?

最近和小伙伴聊到了一个问题&#xff1a;斜齿轮螺旋角和导程的关系&#xff0c;主要是在遇到在采用转位设计方式的刀具时&#xff0c;更觉得有点迷惑&#xff0c;今天咱们就聊聊这个事儿。 先来说斜齿轮螺旋角和导程的关系&#xff1a; 斜齿轮是有多个螺旋面组成的&#xff0…

解决RTC内核驱动的问题bm8563

常用pcf-8563 , 国产平替BM8563(驱动管脚一致)&#xff1b; 实时时钟是很常用的一个外设&#xff0c;通过实时时钟我们就可以知道年、月、日和时间等信息。 因此在需要记录时间的场合就需要实时时钟&#xff0c;可以使用专用的实时时钟芯片来完成此功能 RTC 设备驱动是一个标准…

【证明】快慢指针在带环链表中是否存在无法相遇的情形

P. S.&#xff1a;以下代码均在VS2019环境下测试&#xff0c;不代表所有编译器均可通过。 P. S.&#xff1a;测试代码均未展示头文件stdio.h的声明&#xff0c;使用时请自行添加。 目录 1. 前言2. 证明过程2.1 证明2.2 加证 3. 结论4. 结语 1. 前言 在了解本次内容前&#xff…

牛客热题:判断链表是否有环

&#x1f4df;作者主页&#xff1a;慢热的陕西人 &#x1f334;专栏链接&#xff1a;力扣刷题日记 &#x1f4e3;欢迎各位大佬&#x1f44d;点赞&#x1f525;关注&#x1f693;收藏&#xff0c;&#x1f349;留言 文章目录 牛客热题&#xff1a;判断链表是否有环题目链接方法一…

ansible-playbook离线升级centos内核

目录 概述实践ansible目录结构关键代码执行效果 结束 概述 内核离线包官网下载地址如下&#xff1a; 地址 实践 ansible目录结构 如对 ansible 不熟悉&#xff0c;离线包下载有问题&#xff0c;请至此地址下载&#xff0c;按本文操作可直接使用。 相关文章链接如下 文章地…

普乐蛙元宇宙VR体验馆设备集体亮相VR文旅景区展

普乐蛙全国巡展又双叒叕开始了! 这次来到的是“好客山东”↓↓ 山东2024休闲旅游产业展 4月25日至27日&#xff0c;2024休闲旅游产业展在临沂国际博览中心举办。本次展会以“潮购文旅好品&#xff0c;乐享时尚生活”为主题&#xff0c;汇聚全国文旅产业上下游500多家企业、上万…