【Emgu CV教程】7.4、图像锐化(增强)之对数变换

2024-02-26 09:12

本文主要是介绍【Emgu CV教程】7.4、图像锐化(增强)之对数变换,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

文章目录

  • 一、介绍
  • 二、代码
  • 三、效果举例


一、介绍

对数变换的图像增强,顾名思义,就是求出每个像素的对数值,然后生成新的目标图像,再经过简单处理,就可以实现图像增强的目的。Emgu CV没有专门的对数增强的函数,可以自己写代码实现,思路如下:

1. 加载原始图像srcMat;
2. 对srcMat每个像素值求出对数值,生成新图像dstMat;
3. dstMat归一化,范围是0 - 255,得到最终dstMat

就是这么简单,整体算下来对cpu的消耗也不大。

二、代码

C#代码如下:

Mat tempMat = srcMat.Clone();
Mat dstMat = new Mat();
Image<Bgr, byte> image = tempMat.ToImage<Bgr, byte>();
for (int i = 0; i < image.Rows; i++)
{for (int j = 0; j < image.Cols; j++){image.Data[i, j, 0] = (byte)Math.Log(1 + image.Data[i, j, 0]); // 蓝色通道image.Data[i, j, 1] = (byte)Math.Log(1 + image.Data[i, j, 1]); // 绿色通道image.Data[i, j, 2] = (byte)Math.Log(1 + image.Data[i, j, 2]); // 红色通道}
}dstMat = image.Mat;
CvInvoke.Normalize(dstMat, dstMat, 0, 255, NormType.MinMax, DepthType.Cv8U);
CvInvoke.Imshow("Log sharping image, " + dstMat.Size.ToString(), dstMat);

三、效果举例

原始素材定义为srcMat,如下:
在这里插入图片描述
还是这个电影里的镜头,执行上述代码,增强后的图像如下:
在这里插入图片描述
这张图像用对数增强,昏暗的地方变得很亮,虽然最终效果上不如上一篇文章介绍的彩色图像直方图均衡化,但是图像对数增强还是很好用的,关键是看输入的图像是什么样的。比如我从网上找了一个夜间天桥的黑白照片,对数增强后,可以更明显的看到左边树叶的部分轮廓更明显了,见下图所示:
在这里插入图片描述

最后,读者们要记住对数增强的特点:

1、对数变换可以将图像的低灰度值部分扩展,显示出低灰度部分更多的细节,将其高灰度值部分压缩,减少高灰度值部分的细节,从而达到强调图像低灰度部分的目的。
2、图像经过对数变换后,较暗区域的对比度将有所提升,所以就可以增强图像的暗部细节


原创不易,请勿抄袭。共同进步,相互学习。

这篇关于【Emgu CV教程】7.4、图像锐化(增强)之对数变换的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/748355

相关文章

SpringBoot集成redisson实现延时队列教程

《SpringBoot集成redisson实现延时队列教程》文章介绍了使用Redisson实现延迟队列的完整步骤,包括依赖导入、Redis配置、工具类封装、业务枚举定义、执行器实现、Bean创建、消费... 目录1、先给项目导入Redisson依赖2、配置redis3、创建 RedissonConfig 配

javacv依赖太大导致jar包也大的解决办法

《javacv依赖太大导致jar包也大的解决办法》随着项目的复杂度和依赖关系的增加,打包后的JAR包可能会变得很大,:本文主要介绍javacv依赖太大导致jar包也大的解决办法,文中通过代码介绍的... 目录前言1.检查依赖2.更改依赖3.检查副依赖总结 前言最近在写项目时,用到了Javacv里的获取视频

基于C#实现PDF转图片的详细教程

《基于C#实现PDF转图片的详细教程》在数字化办公场景中,PDF文件的可视化处理需求日益增长,本文将围绕Spire.PDFfor.NET这一工具,详解如何通过C#将PDF转换为JPG、PNG等主流图片... 目录引言一、组件部署二、快速入门:PDF 转图片的核心 C# 代码三、分辨率设置 - 清晰度的决定因

Java Scanner类解析与实战教程

《JavaScanner类解析与实战教程》JavaScanner类(java.util包)是文本输入解析工具,支持基本类型和字符串读取,基于Readable接口与正则分隔符实现,适用于控制台、文件输... 目录一、核心设计与工作原理1.底层依赖2.解析机制A.核心逻辑基于分隔符(delimiter)和模式匹

spring AMQP代码生成rabbitmq的exchange and queue教程

《springAMQP代码生成rabbitmq的exchangeandqueue教程》使用SpringAMQP代码直接创建RabbitMQexchange和queue,并确保绑定关系自动成立,简... 目录spring AMQP代码生成rabbitmq的exchange and 编程queue执行结果总结s

python使用Akshare与Streamlit实现股票估值分析教程(图文代码)

《python使用Akshare与Streamlit实现股票估值分析教程(图文代码)》入职测试中的一道题,要求:从Akshare下载某一个股票近十年的财务报表包括,资产负债表,利润表,现金流量表,保存... 目录一、前言二、核心知识点梳理1、Akshare数据获取2、Pandas数据处理3、Matplotl

Python pandas库自学超详细教程

《Pythonpandas库自学超详细教程》文章介绍了Pandas库的基本功能、安装方法及核心操作,涵盖数据导入(CSV/Excel等)、数据结构(Series、DataFrame)、数据清洗、转换... 目录一、什么是Pandas库(1)、Pandas 应用(2)、Pandas 功能(3)、数据结构二、安

2025版mysql8.0.41 winx64 手动安装详细教程

《2025版mysql8.0.41winx64手动安装详细教程》本文指导Windows系统下MySQL安装配置,包含解压、设置环境变量、my.ini配置、初始化密码获取、服务安装与手动启动等步骤,... 目录一、下载安装包二、配置环境变量三、安装配置四、启动 mysql 服务,修改密码一、下载安装包安装地

电脑提示d3dx11_43.dll缺失怎么办? DLL文件丢失的多种修复教程

《电脑提示d3dx11_43.dll缺失怎么办?DLL文件丢失的多种修复教程》在使用电脑玩游戏或运行某些图形处理软件时,有时会遇到系统提示“d3dx11_43.dll缺失”的错误,下面我们就来分享超... 在计算机使用过程中,我们可能会遇到一些错误提示,其中之一就是缺失某个dll文件。其中,d3dx11_4

Linux下在线安装启动VNC教程

《Linux下在线安装启动VNC教程》本文指导在CentOS7上在线安装VNC,包含安装、配置密码、启动/停止、清理重启步骤及注意事项,强调需安装VNC桌面以避免黑屏,并解决端口冲突和目录权限问题... 目录描述安装VNC安装 VNC 桌面可能遇到的问题总结描js述linux中的VNC就类似于Window