首页 > 其他分享 >《计算机视觉技术》实验报告——6.生成并去除图像噪声

《计算机视觉技术》实验报告——6.生成并去除图像噪声

时间:2024-11-08 23:15:10浏览次数:3  
标签:__ src NoiseImg 噪声 imshow cv2 去除 import 实验报告

首次完成时间:2024  10 22

去除图像噪声

一.实验内容

1. 根据均匀噪声的原理,设计添加均匀噪声。

1)程序代码:
import cv2
import random as rd
import numpy as np

def avg_noise(src, noise_num):
    img_noise = src.copy()
    rows, cols, chn = img_noise.shape
    for i in range(noise_num):
        x = np.random.uniform(0, rows)
        y = np.random.uniform(0, cols)
        img_noise[int(x), int(y), :] = 255
    return img_noise

if __name__ == '__main__':
    # 读取图像
    src = cv2.imread('../cat.png')
    # 加噪声
    avgnoised = avg_noise(src, 1000)
    cv2.imshow('input', src)
    cv2.imshow('avg', avgnoised)
    cv2.waitKey(0)
    cv2.destroyAllWindows()
2)代码分析:

2. 根据高斯噪声的原理,设计添加高斯噪声。

1)程序代码:
import cv2
import numpy as np
import random


# (2)添加高斯噪声
def GaussianNoise(src, mean, sigma, percetage):
    NoiseImg = src.copy()
    NoiseNum = int(percetage * src.shape[0] * src.shape[1])
    for i in range(NoiseNum):
        randX = random.randint(0, src.shape[0] - 1)
        randY = random.randint(0, src.shape[1] - 1)
        randomGauss = np.random.normal(mean, sigma)
        for channel in range(NoiseImg.shape[2]):
            NoiseImg[randX, randY, channel] = NoiseImg[randX, randY, channel] + randomGauss
            if NoiseImg[randX, randY, channel] < 0:
                NoiseImg[randX, randY, channel] = 0
            elif NoiseImg[randX, randY, channel] > 255:
                NoiseImg[randX, randY, channel] = 255
    return NoiseImg

if __name__ == '__main__':
    src = cv2.imread('../cat.png')
    gdst = GaussianNoise(src, 10, 20, 0.1)
    cv2.imshow('src', src)
    cv2.imshow('gaussian', gdst)
    cv2.waitKey(0)
    cv2.destroyAllWindows()
2)代码分析:

3. 根据椒盐噪声的原理,设计添加椒盐噪声。

1)程序代码:
import cv2
from numpy import *


def PepperandSalt(src, percetage):
    NoiseImg = src.copy()
    NoiseNum = int(percetage * src.shape[0] * src.shape[1])
    for i in range(NoiseNum):
        randX = random.randint(0, src.shape[0] - 1)
        randY = random.randint(0, src.shape[1] - 1)
        if random.randint(0, 1) <= 0.5:
            NoiseImg[randX, randY] = 0
        else:
            NoiseImg[randX, randY] = 255
    return NoiseImg


if __name__ == '__main__':
    src = cv2.imread('../cat.png')
    imnoised = PepperandSalt(src, 0.05)
    cv2.imshow('src', src)
    cv2.imshow('imnoised', imnoised)
    cv2.waitKey(0)
    cv2.destroyAllWindows()
2)代码分析:

4. 根据泊松噪声噪声的原理,设计添加泊松噪声。

1)程序代码:
import cv2
import numpy as np

def PoissonNoise(src, lam):
    NoiseImg = src.copy()
    # lam >= 0 值越小,噪声频率越少
    # 生成与图像尺寸相同的泊松噪声
    poissonNoise = np.random.poisson(lam=lam, size=NoiseImg.shape[:2]).astype(np.uint8)
    # 为每个颜色通道添加噪声
    for i in range(NoiseImg.shape[2]):
        NoiseImg[:, :, i] = NoiseImg[:, :, i] + poissonNoise
    # 确保像素值在0-255范围内
    NoiseImg = np.clip(NoiseImg, 0, 255).astype(np.uint8)
    return NoiseImg

if __name__ == '__main__':
    src = cv2.imread('../cat.png')  # 确保路径正确
    psnoised = PoissonNoise(src, 20)
    cv2.imshow('input', src)
    cv2.imshow('poisson', psnoised)
    cv2.waitKey(0)
    cv2.destroyAllWindows()
2)代码分析:

5. 分别使用均值滤波、高斯滤波、中值滤波对图像做平滑处理。

1)程序代码:
import cv2
src = cv2.imread('gaussian_noise.jpg')
dst = cv2.blur(src, (5, 5))
gdst = cv2.GaussianBlur(src, (5, 5), 0, 0)
mdst = cv2.medianBlur(src, 5)
cv2.imshow('inosed', src)
cv2.imshow('blur', dst)
cv2.imshow('GaussianBlur', gdst)
cv2.imshow('medianBlur', mdst)
cv2.waitKey(0)
cv2.destroyAllWindows()
2)代码分析:

6. 使用erode()和dilate()函数对图像做腐蚀操作和膨胀操作实验,比实验效果。

1)程序代码:
import cv2
src = cv2.imread("gaussian_noise.jpg")
kernel = cv2.getStructuringElement(cv2.MORPH_ELLIPSE, (10, 10))
gray_res = cv2.cvtColor(src, cv2.COLOR_BGR2GRAY)
# 腐蚀操作
erode = cv2.erode(gray_res, kernel)
# 膨胀操作
dilate = cv2.dilate(gray_res, kernel)
cv2.imshow('src', src)
cv2.imshow("erode", erode)
cv2.imshow('dilate', dilate)
cv2.waitKey(0)
cv2.destroyAllWindows()
2)代码分析:

7. 使用morphologyEx()对图像做开运算和闭运算,比运算效果。

1)程序代码:
import cv2
src = cv2.imread('cat.png')
kernel = cv2.getStructuringElement(cv2.MORPH_ELLIPSE, (5, 5))
gray_res = cv2.cvtColor(src, cv2.COLOR_BGR2GRAY)
# 开运算
opened = cv2.morphologyEx(gray_res, cv2.MORPH_OPEN, kernel, iterations=1)
# 闭运算
closed = cv2.morphologyEx(gray_res, cv2.MORPH_DILATE, kernel, iterations=1)
cv2.imshow('input', src)
cv2.imshow('opened', opened)
cv2.imshow('closed', closed)
cv2.waitKey(0)
cv2.destroyAllWindows()
2)代码分析:

标签:__,src,NoiseImg,噪声,imshow,cv2,去除,import,实验报告
From: https://blog.csdn.net/m0_64545019/article/details/143455061

相关文章

  • 20222311 2024-2025-1 《网络与系统攻防技术》实验四实验报告
    1.实验内容1.1恶意代码文件类型标识、脱壳与字符串提取对提供的rada恶意代码样本,进行文件类型识别,脱壳与字符串提取,以获得rada恶意代码的编写作者,具体操作如下:(1)使用文件格式和类型识别工具,给出rada恶意代码样本的文件格式、运行平台和加壳工具;(2)使用超级巡警脱壳机等脱壳软件,......
  • SDN实验报告
    SDN上机实验实验目的能够使用Mininet的实现网络拓扑构建;熟悉OpenvSwitch交换机的基本配置;熟悉OpenFlow协议的通信原理掌握pox控制器的基本使用方法;掌握Ryu控制期的基本使用方法;掌握北向应用的基本开发方法实验环境基础环境选择ubuntu-20.04.6......
  • 20222410 2024-2025-1 《网络与系统攻防技术》实验五实验报告
    1.实验内容总结一下本周学习内容,不要复制粘贴2.实验过程2.1查询baidu.com并获取指定信息2.1.1DNS注册人及联系方式使用whois+域名,可以获取DNS注册人及联系方式whoisbaidu.com还可以使用在线域名查询工具获取相关信息:可以查出注册人为MarkMonitor,Inc.,联系方式为abus......
  • 织梦如何去除img图片中的style width height属性
    问题:在做响应式模板时,图片无法自适应,原因是织梦编辑器在上传图片时会自动加上 style、width 和 height 属性。解决方法:修改 article_add.php 文件:打开 dede/article_add.php 文件。搜索以下代码:$body=AnalyseHtmlBody($body,$description,$litpic,$keyw......
  • 20222327 2024-2025-1 《网络与系统攻防技术》实验四实验报告
    一、实验内容1.恶意代码文件类型标识、脱壳与字符串提取2.使用IDAPro静态或动态分析crackme1.exe与crakeme2.exe,寻找特定输入,使其能够输出成功信息。3.分析一个自制恶意代码样本rada,并撰写报告,回答问题4.取证分析实践二、实验过程1.对恶意代码样本,进行文件类型识别,脱壳与字......
  • # 20222326 2024-2025-1 《网络与系统攻防技术》实验四实验报告
    1.实验内容一、恶意代码文件类型标识、脱壳与字符串提取对提供的rada恶意代码样本,进行文件类型识别,脱壳与字符串提取,以获得rada恶意代码的编写作者,具体操作如下:(1)使用文件格式和类型识别工具,给出rada恶意代码样本的文件格式、运行平台和加壳工具;(2)使用超级巡警脱壳机等脱壳软件,......
  • 20222317 2024-2025-1 《网络与系统攻防技术》实验四实验报告
    1.实验内容1.1恶意代码文件类型标识、脱壳与字符串提取对提供的rada恶意代码样本,进行文件类型识别,脱壳与字符串提取,以获得rada恶意代码的编写作者,具体操作如下:(1)使用文件格式和类型识别工具,给出rada恶意代码样本的文件格式、运行平台和加壳工具;(2)使用超级巡警脱壳机等脱壳软件,......
  • 20222307 2024-2025-1 《网络与系统攻防技术》实验四实验报告
    1.实验内容1.1本周所学IDApro、ProcessExplorer、peid、超级巡警等软件的学习与使用PE文件、蜜罐技术、tcpdump等专业知识的学习对于wireshark的抓包的深入分析1.2实验环境主机kali虚拟机安装winXP虚拟机实现xp与主机的ping通,参照:关闭xp虚拟机防火墙1.3实践内容......
  • TPAMI 2024 | NICEST:用于鲁棒场景图生成的噪声标签修正与训练
    题目:NICEST:NoisyLabelCorrectionandTrainingforRobustSceneGraphGenerationNICEST:用于鲁棒场景图生成的噪声标签修正与训练作者:LinLi;JunXiao;HanrongShi;HanwangZhang;YiYang;WeiLiu;LongChen摘要几乎所有现有的场景图生成(SGG)模型都忽视......
  • 20222323 2024-2025-1 《网络与系统攻防技术》实验四实验报告
    一、实验内容(一)恶意代码文件类型标识、脱壳与字符串提取对提供的rada恶意代码样本,进行文件类型识别,脱壳与字符串提取,以获得rada恶意代码的编写作者,具体操作如下:(1)使用文件格式和类型识别工具,给出rada恶意代码样本的文件格式、运行平台和加壳工具;(2)使用超级巡警脱壳机等脱壳软件,......