OpenCV入门9:图像增强和图像滤波

news/2024/7/21 5:51:27 标签: 计算机视觉, 图像处理, opencv

图像增强是一种通过对图像进行处理以改善其质量、对比度、清晰度等方面的技术。在OpenCV中,有多种图像增强的方法和函数可用。下面简要介绍一些常见的图像增强方法及其在OpenCV中的实现方式。

  • 直方图均衡化(Histogram Equalization):

直方图均衡化是一种通过调整图像的像素值分布来增强图像对比度的方法。它利用图像的像素直方图,将像素值重新映射到一个更均匀的分布上。在OpenCV中,可以使用cv::equalizeHist()函数来实现直方图均衡化。以下示例展示了如何使用直方图均衡化对图像进行增强:

cv::Mat image = cv::imread("image.jpg", cv::IMREAD_GRAYSCALE); // 读取灰度图像 cv::Mat equalizedImage; 
cv::equalizeHist(image, equalizedImage); // 直方图均衡化
  • 锐化滤波器:

锐化滤波器是一种用于增强图像边缘和细节的滤波方法。它通过增强图像的高频部分来加强图像的边缘信息。在OpenCV中,可以使用拉普拉斯滤波器来实现图像的锐化。以下示例展示了如何使用拉普拉斯滤波器对图像进行锐化处理:

cv::Mat image = cv::imread("image.jpg", cv::IMREAD_GRAYSCALE); // 读取灰度图像 cv::Mat sharpenedImage; 
cv::Laplacian(image, sharpenedImage, CV_8U); // 拉普拉斯滤波器
  •  图像增强滤波器:

滤波器是一种常用的图像增强方法,通过对图像进行滤波处理来改善图像的质量和特征。常见的滤波器包括均值滤波器、高斯滤波器、中值滤波器等。在OpenCV中,可以使用cv::blur()cv::GaussianBlur()cv::medianBlur()等函数来实现不同类型的滤波器。

  • 均值滤波

均值滤波是一种简单的线性平滑滤波器,通过计算像素邻域平均值来实现去除噪声的目的。常用函数为blur(),例如:

Mat image = imread("test.jpg"); 
Mat blurredImage; 
// size表示滤波核的大小 
blur(image, blurredImage, Size(7, 7)); 
imshow("image", blurredImage); 
waitKey();

图像被平滑了,并且锐化变得更加模糊。

  • 中值滤波

中值滤波是一种非线性平滑滤波器,通过计算像素邻域的中值来实现去除噪声的目的。函数为 medianBlur(),例如:

Mat image = imread("test.jpg"); 
Mat denoisedImage; 
// ksize表示滤波核的大小,必须为奇数 
medianBlur(image, denoisedImage, 5); 
imshow("image", denoisedImage); 
waitKey();

这段代码演示了如何使用中值滤波来去除图像中的噪声。

  • 高斯滤波

高斯滤波是一种常用的线性平滑滤波器,通过计算像素邻域的加权平均值来实现去除噪声的目的。常用函数为 GaussianBlur(),例如:

Mat image = imread("test.jpg"); 
Mat blurredImage; 
// size表示滤波核的大小,sigma表示方差(控制滤波强度) 
GaussianBlur(image, blurredImage, Size(5, 5), 0); 
imshow("image", blurredImage); 
waitKey();

这段代码演示了如何使用高斯滤波平滑图像。

这些是OpenCV中常用的图像增强方法的示例,包括直方图均衡化、滤波器等。通过图像增强,可以改善图像的对比度、清晰度和质量等方面,提高图像的可视化效果和特征提取的效果。

希望以上内容能够对图像增强及OpenCV中的实现有所了解。如果还有其他问题,请随时提问!


http://www.niftyadmin.cn/n/5170177.html

相关文章

使用Ubuntu 系统自带工具设置Ubuntu U盘启动盘

哈哈哈,这有点悖论,如果我有Ubuntu系统了,那我干嘛还要设置Ubuntu U盘启动呢。 但是可找有Ubuntu系统的电脑帮忙的,因为这个Ubuntu自带工具还是很方便的。 在 这里 或者那里下载需要的Ubuntu系统版本。找一个使用Ubuntu系统的电脑…

【OpenHarmony内核】Harmony内核之线程操作函数(二)

文章目录 前言一、获取线程优先级二、转交控制运行权三、挂起线程3.1 线程的挂起是什么意思?3.2 函数介绍四、恢复线程五、分离指定的线程5.1 分离线程是什么意思5.2 函数介绍六、等待线程终止运行七、终止当前线程的运行八、终止指定线程的运行九、获取活跃线程数总结前言 O…

一致性算法介绍(二)

1.4. NWR N :在分布式存储系统中,有 多少份备份数据 W :代表一次成功的更新操作要求至少有 w 份数据写入成功 R : 代表一次成功的读数据操作要求至少有 R 份数据成功读取 NWR值的不同组合会产生不同的一致性效果,当WR…

完整版付费进群带定位源码

看到别人发那些不是挂羊头卖狗肉,要么就是发的缺少文件引流的。恶心的一P 这源码是我付费花钱买的分享给大家,功能完整。 搭建教程 nginx1.2 php5.6--7.2均可 最好是7.2 第一步上传文件程序到网站根目录解压 第二步导入数据库(shujuk…

设备零部件更换ar远程指导系统加强培训效果

随着科技的发展,AR技术已经成为了一种广泛应用的新型技术。AR远程指导系统作为AR技术的一种应用,具有非常广泛的应用前景。 一、应用场景 气象监测AR教学软件适用于多个领域,包括气象、环境、地理等。在教学过程中,软件可以帮助学…

QDockWidget组件的隐藏与显示(按钮控制)

本文内容包括: 1、控制按钮的点击效果美化; 2、用按钮控制QDockWidget组件的隐藏与显示; 参考前提:已有.ui文件、已有QDockWidget组件、已有一个控制QDockWidget组件的按钮 实现效果: DockWidget组件的隐藏与显示&…

高阶组件和Hooks

目录 1. 高阶组件(Higher-Order Components) 1.1 创建高阶组件 1.2 使用高阶组件 2. Hooks 2.1 使用useState Hook管理状态 2.2 创建自定义Hook 结论 1. 高阶组件(Higher-Order Components) 高阶组件是一个接受一个组件作为…

Apache Airflow (四) :Airflow 调度shell命令

🏡 个人主页:IT贫道_大数据OLAP体系技术栈,Apache Doris,Clickhouse 技术-CSDN博客 🚩 私聊博主:加入大数据技术讨论群聊,获取更多大数据资料。 🔔 博主个人B栈地址:豹哥教你大数据的个人空间-豹…