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.mzph.cn/news/830624.shtml

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

相关文章

2024最新的,免费的 ChatGPT 网站AI(八个)

ChatGPT是美国人工智能研究实验室OpenAI在2022年11月推出的一款人工智能技术驱动的语言模型应用。它基于GPT-3.5架构(后续还有GPT-4架构的升级版)构建,拥有强大的自然语言处理能力和上下文理解能力,能够参与多轮对话,为…

Python_GUI工具包 PyQt 与 Pyside6的介绍

Python_GUI工具包 PyQt 与 Pyside6的介绍 一、简介 在Python的GUI(图形用户界面)开发领域,PyQt和PySide6是两个非常重要的工具包。它们都基于Qt库,为Python开发者提供了丰富的GUI组件和强大的功能。当然Python也有一些其他的GU…

Halcon 检测物体定位点

文章目录 get_domain 返回所有输入图像的定义域作为一个区域add_channels 给区域增加灰度值find_shape_model 发现匹配模板find_shape_models 发现最佳模板示例 get_domain 返回所有输入图像的定义域作为一个区域 Halcon 中的区域 get_domain(Image : Domain : : ) Image : …

SpringBoot之自定义注解参数校验

SpringBoot之自定义注解参数校验 为什么要自定义注解 我这里先引入一个例子,就比如我现在要写文章,文章也许写完正要发布,也可以是还没写完正要存草稿,前端往后端发送数据,如果前端的state不是草稿或者已发布状态&…

大模型应用开发极简入门

简单的归纳一下书的前序部分 目录 LLM(Large Language Model)的应用技术栈通常包括以下几个方面: 深度学习框架: 数据预处理工具: 训练资源: 模型优化和调参工具: 部署和应用集成&#xf…

智慧图书管理|基于SSM+vue的网上服装商城系统(源码+数据库+文档)

智慧图书管理目录 基于SSMvue的网上服装商城系统 一、前言 二、系统设计 三、系统功能设计 1.1 服装列表 1.2 公告信息管理 1.3 公告类型管理 四、数据库设计 五、核心代码 六、论文参考 七、最新计算机毕设选题推荐 八、源码获取: 博主介绍&#xff1…

linus下Anaconda创建虚拟环境pytorch

一、虚拟环境 1.创建 输入下面命令 conda create -n env_name python3.8 输入y 2.激活环境 输入 conda activate env_name 二、一些常用的命令 在Linux的控制平台 切换到当前的文件夹 cd /根目录/次目录 查看conda目录 conda list 查看pip目录 pip list查看历史命…

Python 爬虫如何配置代理 IP (Py 采集)

在Python中配置代理IP,可以通过设置requests库的proxies参数来实现。以下是一个示例: import requests# 则立可以获取稳定代理Ip:https://www.kuaidaili.com/?refrg3jlsko0ymg # 推荐使用私密动态 IP proxies {"http": "ht…

芒果超媒财报解读:科技加持下,如何蜕变为内容“全科生”?

在降本增效和内容为王的基调下,国内头部长视频平台正在拥抱增长。 爱奇艺率先公布2023年财务数据,实现归母净利润19.25亿元,与2022年亏损1.36亿元相比,扭亏为盈且增幅显著。 而近日,随着新一季《浪姐》播出&#xff…

JAVA面试题分享---多线程与线程池

多线程 什么是线程?线程和进程的区别?(了解) 线程:是进程的一个实体,是 cpu 调度和分派的基本单位,是比进程更小的 可以独立运行的基本单位。 进程:具有一定独立功能的程序关于某个数据集合上的一次运…

【漏洞复现】IP-guard WebServer 权限绕过漏洞

0x01 产品简介 IP-guard WebServer 是 IP-guard 网络安全管理系统的一部分,用于提供 Web 界面以进行用户权限管理、监控和审计。 0x02 漏洞概述 IP-guard WebServer的权限验证机制中存在设计缺陷,未授权的攻击者能够规避安全验证,通过后端接口执行文件的任意读取和删除操…

DaVinci Resolve Studio 19(达芬奇19调色剪辑)win/mac激活版

DaVinci Resolve Studio是一个结合专业的8k 编辑,颜色混合,视觉效果和音频后期制作的软件。只需点击一下,你就可以立即在编辑、混音、特效和音频流之间切换。此外,达芬奇解决(达芬奇)是一个多用户协作的解决方案,使编辑…

一单利润100+,不起眼的小生意,却能闷声发财!

今天,我想向大家介绍一个看似不太热门,但实际上需求很高的项目——酒店代订。这个项目其实很早以前就已经有人开始尝试了,但可能并没有被大众所熟知。简而言之,酒店代订就是帮助他人通过我们来预订他们想要入住的酒店。 当客户将…

管理能力学习笔记八:Will-Skill矩阵“盘“团队

如何把握带教中的“度”,才能在把事情做好的基础上,又能使员工获得成长呢? 需要做到 合理授权 & 适当辅导 如何做到? 通过使用 意愿-技能矩阵(Will-Skill Matrix) 辨别不同带教方法的适用情形,"盘"…

ElasticSearch总结1

目录 一、ElasticSearch介绍: 举例一: 举例二: 举例三: 二、ELK技术栈 三、Elasticsearch 的基本概念: 四、正向索引和倒排索引: 正向索引: 倒排索引: 五、Mysql和Elastics…

新版本Qt Creator安装配置

新版本Qt Creator安装配置 文章目录 新版本Qt Creator安装配置1、前言2、环境3、安装配置4、总结 更多精彩内容👉个人内容分类汇总 👈👉Qt开发经验 👈 1、前言 Qt是一个跨平台的C应用程序开发框架,而Qt Creator是专为Q…

免费的单片机物联网MQTT平台选择

目的是多设备接入中控,平台只做转发。 选择巴法云:巴法科技&巴法云-巴法设备云-巴法物联网云平台 clientId是私钥uid: 多设备 clientId 填同一个 uid 都是可以的。平台应该是加了后缀区分。 支持自定义topic,操作简单&#x…

Spring ai 快速入门及使用,构建你自己的ai

第一步:创建springboot项目 jdk必须是17及以上 1.8用不了 第二步 选择web和ai的依赖 选择openai 第三步 需要配置openai key 配置 分享个免费或的apikey的地方New API 会免费赠送1刀的token spring.application.namespringAI spring.ai.openai.base-urlhttps://ap…

esp32学习

开启自动补全功能 Arduino IDE 2.0开启代码补全及修改中文_arduino ide怎么设置中文-CSDN博客 PWM 、 ADC转换 在使用这个adc默认配置的时候adc引脚的输入电压必须是介于0-1之间,如何高于1v的电压都会视为一个最高值,如果要增加测量电压你就需要配置一…

Flexible布局在Web前端开发中的实际应用

随着Web前端技术的不断发展,Flexible布局(弹性布局)已成为现代网页设计中不可或缺的一部分。它提供了一种高效、灵活的方式来组织和管理页面元素,使开发者能够轻松应对各种复杂的布局需求。本文将通过一个实际的应用案例来介绍Fle…