OpenCV 图像退化与增强

2024-05-16 01:36
文章标签 图像 opencv 增强 退化

本文主要是介绍OpenCV 图像退化与增强,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

退化

滤波

img_averaging=cv2.blur(img2,(3,3)) #均值滤波
img_median = cv2.medianBlur(img2,3) #中值滤波

高斯模糊

result = cv2.GaussianBlur(source, (11,11), 0)

高斯噪声

def add_noise_Guass(img, mean=0, var=0.01):  # 添加高斯噪声img = np.array(img / 255, dtype=float)# 将原始图像的像素值进行归一化,除以255使得像素值在0-1之间noise = np.random.normal(mean, var ** 0.5, img.shape)#0.01的0.5次幂,ctrl点击normal函数可见参数#给出均值为loc,标准差为scale的高斯随机数(场)'''numpy.random.normal(loc=0.0, scale=1.0, size=None)loc:float此概率分布的均值(对应着整个分布的中心centre)scale:float此概率分布的标准差(对应于分布的宽度,scale越大越矮胖,scale越小,越瘦高)size:int or tuple of ints输出的shape,默认为None,只输出一个值'''out_img = img + noise# 将噪声和原始图像进行相加得到加噪后的图像if out_img.min() < 0:low_clip = -1else:low_clip = 0out_img = np.clip(out_img, low_clip, 1.0)#clip函数将元素的大小限制在了low_clip和1之间了,小于的用low_clip代替,大于1的用1代替out_img = np.uint8(out_img * 255)# 解除归一化,乘以255将加噪后的图像的像素值恢复return out_img

椒盐噪声

def sp_noise(image, amount):output = image.copy()threshold = 1 - amount#传入的参数,设置一个阙值#amount 越大,白色越多for i in range(image.shape[0]):#shape[0]表示图片高for j in range(image.shape[1]):#图片宽rdm = random.random()#取0到1之间的浮点数if rdm < amount: #如果随机数小于参数,那么像素点取黑色output[i][j] = 0  #亮度0%,取黑色elif rdm > threshold:output[i][j] = 255#取白色return output

增强

修复破损

import cv2
import numpy as np
# 读取照片
image = cv2.imread('old_photo.jpg')
# 将图像转换为灰度图
gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
# 应用高斯模糊来减少图像噪声
blurred = cv2.GaussianBlur(gray, (5, 5), 0)
# 使用Canny边缘检测器识别边缘
edges = cv2.Canny(blurred, 50, 150)
# 使用膨胀操作将边缘连接在一起形成轮廓
dilated = cv2.dilate(edges, None, iterations=2)
# 在原始图像上绘制轮廓,以便于可视化结果
result = cv2.inpaint(image, dilated, (3, 3), cv2.INPAINT_TELEA)
# 显示修复后的照片
cv2.imshow('Result', result)
cv2.waitKey(0)
cv2.destroyAllWindows()

先读取照片,并将其转换为灰度图。然后,我们使用高斯模糊减少图像噪声,并使用Canny边缘检测器识别边缘。接下来,我们通过膨胀操作将边缘连接在一起形成轮廓,以便识别损坏区域。最后,我们使用OpenCV的inpaint函数来修复损坏区域,并将结果显示出来。

这篇关于OpenCV 图像退化与增强的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

Python中OpenCV与Matplotlib的图像操作入门指南

《Python中OpenCV与Matplotlib的图像操作入门指南》:本文主要介绍Python中OpenCV与Matplotlib的图像操作指南,本文通过实例代码给大家介绍的非常详细,对大家的学... 目录一、环境准备二、图像的基本操作1. 图像读取、显示与保存 使用OpenCV操作2. 像素级操作3.

C/C++中OpenCV 矩阵运算的实现

《C/C++中OpenCV矩阵运算的实现》本文主要介绍了C/C++中OpenCV矩阵运算的实现,包括基本算术运算(标量与矩阵)、矩阵乘法、转置、逆矩阵、行列式、迹、范数等操作,感兴趣的可以了解一下... 目录矩阵的创建与初始化创建矩阵访问矩阵元素基本的算术运算 ➕➖✖️➗矩阵与标量运算矩阵与矩阵运算 (逐元

C/C++的OpenCV 进行图像梯度提取的几种实现

《C/C++的OpenCV进行图像梯度提取的几种实现》本文主要介绍了C/C++的OpenCV进行图像梯度提取的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的... 目录预www.chinasem.cn备知识1. 图像加载与预处理2. Sobel 算子计算 X 和 Y

C/C++和OpenCV实现调用摄像头

《C/C++和OpenCV实现调用摄像头》本文主要介绍了C/C++和OpenCV实现调用摄像头,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一... 目录准备工作1. 打开摄像头2. 读取视频帧3. 显示视频帧4. 释放资源5. 获取和设置摄像头属性

c/c++的opencv图像金字塔缩放实现

《c/c++的opencv图像金字塔缩放实现》本文主要介绍了c/c++的opencv图像金字塔缩放实现,通过对原始图像进行连续的下采样或上采样操作,生成一系列不同分辨率的图像,具有一定的参考价值,感兴... 目录图像金字塔简介图像下采样 (cv::pyrDown)图像上采样 (cv::pyrUp)C++ O

c/c++的opencv实现图片膨胀

《c/c++的opencv实现图片膨胀》图像膨胀是形态学操作,通过结构元素扩张亮区填充孔洞、连接断开部分、加粗物体,OpenCV的cv::dilate函数实现该操作,本文就来介绍一下opencv图片... 目录什么是图像膨胀?结构元素 (KerChina编程nel)OpenCV 中的 cv::dilate() 函

qtcreater配置opencv遇到的坑及实践记录

《qtcreater配置opencv遇到的坑及实践记录》我配置opencv不管是按照网上的教程还是deepseek发现都有些问题,下面是我的配置方法以及实践成功的心得,感兴趣的朋友跟随小编一起看看吧... 目录电脑环境下载环境变量配置qmake加入外部库测试配置我配置opencv不管是按照网上的教程还是de

Python+wxPython构建图像编辑器

《Python+wxPython构建图像编辑器》图像编辑应用是学习GUI编程和图像处理的绝佳项目,本教程中,我们将使用wxPython,一个跨平台的PythonGUI工具包,构建一个简单的... 目录引言环境设置创建主窗口加载和显示图像实现绘制工具矩形绘制箭头绘制文字绘制临时绘制处理缩放和旋转缩放旋转保存编

python+OpenCV反投影图像的实现示例详解

《python+OpenCV反投影图像的实现示例详解》:本文主要介绍python+OpenCV反投影图像的实现示例详解,本文通过实例代码图文并茂的形式给大家介绍的非常详细,感兴趣的朋友一起看看吧... 目录一、前言二、什么是反投影图像三、反投影图像的概念四、反向投影的工作原理一、利用反向投影backproj

使用Python实现图像LBP特征提取的操作方法

《使用Python实现图像LBP特征提取的操作方法》LBP特征叫做局部二值模式,常用于纹理特征提取,并在纹理分类中具有较强的区分能力,本文给大家介绍了如何使用Python实现图像LBP特征提取的操作方... 目录一、LBP特征介绍二、LBP特征描述三、一些改进版本的LBP1.圆形LBP算子2.旋转不变的LB