现代数字图像处理作业—对lena.bmp图像转成灰度图后,加入90%强度的椒盐噪声。尝试任何方法去恢复图像。

现代数字图像处理作业—对lena.bmp图像转成灰度图后,加入90%强度的椒盐噪声。尝试任何方法去恢复图像。对lena.bmp图像转成灰度图后,加入90%强度的椒盐噪声。尝试任何方法去恢复图像。

大家好,又见面了,我是你们的朋友全栈君。

作业代码及内容展示和分析:

1.代码

import cv2 as cv

import random as rd

import matplotlib.pyplot as plt

import numpy as np

le = cv.imread(‘lena.jpg’,0)

lena = le.copy()

def saltNoise_image(im,var):                              #生成椒盐噪声图函数

       w,h = im.shape

       saltNoiseNum = int(w*h*var)                             #噪声总的点数

       all_xy_pos = [[[i,j] for j in range(h)]for i in range(w)]

       xy = []

       for i in all_xy_pos:

              xy.extend(i)

       salt_xy = rd.sample(xy,saltNoiseNum)

       for i,j in salt_xy:

              ra = rd.choice([0,1])

              if ra == 0:

                     im[i,j] = 0

              else:

                     im[i,j] = 255

       return im

def border_image(im):

       im[im==255] = 0

       h,w = im.shape

       im_mask = np.zeros((h+8,w+8),dtype=np.uint8)

       im_mask[4:h+4,4:w+4] = im

       return im_mask

def get_median(arr):

       x = arr[arr!=0]

       x.sort()

       half = len(x)//2

       if len(x)%2 == 0:

              return x[half-1]//2 + x[half]//2

       else:

              return x[half]

def coreMat_cmt(a,b,im):

       arr = im[a-1:a+2,b-1:b+2]

       if arr.sum() == 0:

              arr = im[a-2:a+3,b-2:b+3]

              if arr.sum() == 0:

                     arr = im[a-3:a+4,b-3:b+4]

                     if arr.sum() == 0:

                            arr = im[a-4:a+5,b-4:b+5]

                            if arr.sum() == 0:

                                   return 0

                            else:

                                   gray = get_median(arr)

                                   return gray

                     else:

                            gray = get_median(arr)

                            return gray

              else:

                     gray = get_median(arr)

                     return gray

       else:

              gray = get_median(arr)

              return gray

def run_filter(im):

       h,w = im.shape

       im_mask = np.zeros((h-8,w-8),dtype=np.uint8)

       for i in range(4,h-4):

              for j in range(4,w-4):

                     if im[i,j] ==0:

                            new_gray = coreMat_cmt(i,j,im)

                            im_mask[i-4,j-4] = new_gray

                     else:

                            im_mask[i-4,j-4] = im[i,j]

       return im_mask

def filter_image(im):

       for i in range(5):

              border_im = border_image(im)

              im = run_filter(border_im)

       return im

noise_lena = saltNoise_image(lena,0.9)

filter_lena = filter_image(noise_lena)

cv.imshow(‘0’,le)

cv.imshow(‘1’,noise_lena)

cv.imshow(‘2’,filter_lena)

x = 0

for i in range(lena.shape[0]):

       for j in range(lena.shape[1]):

              x += abs(int(le[i,j]) – int(filter_lena[i,j]))

print(x/(400*400))

if cv.waitKey() == ord(‘A’):

       cv.destroyAllWindows()

2.lena原图、90%强度噪声lena图像、恢复后图像;MSE为85.9

现代数字图像处理作业---对lena.bmp图像转成灰度图后,加入90%强度的椒盐噪声。尝试任何方法去恢复图像。

分析:

依据脉冲噪声的极值准则和不连续准则,利用D-S证据理论进行信息融合,在噪声修复阶段,对于检测窗口内非噪声点的中值,利用距离矩阵和偏差矩阵进行修正。

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/151642.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 活动目录的介绍:深入浅出Active Directory系列(一)

    活动目录的介绍:深入浅出Active Directory系列(一)

    2021年7月30日
    95
  • linux命令export什么意思_shell脚本执行oracle语句

    linux命令export什么意思_shell脚本执行oracle语句Linuxexport命令用法Linuxexport命令用于设置或显示环境变量。在shell中执行程序时,shell会提供一组环境变量。export可新增,修改或删除环境变量,供后续执行的程序使用。export的效力仅限于该次登陆操作。export[-fnp][变量名称]=[变量设置值]参数说明:-f 代表[变量名称]中为函数名称。-n 删除指定的变量。变量实际上并未删除,只是不会输出到后续指令的执行环境中。-p 列出所有的shell赋予程序的环境变量。示例

    2025年9月30日
    4
  • 图像分割之分水岭算法[通俗易懂]

    图像分割之分水岭算法[通俗易懂]使用C++、opencv进行分水岭分割图像分水岭概念是以对图像进行三维可视化处理为基础的:其中两个是坐标,另一个是灰度级。基于“地形学”的这种解释,我们考虑三类点:a.属于局部性最小值的点,也可能存在一个最小值面,该平面内的都是最小值点b.当一滴水放在某点的位置上的时候,水一定会下落到一个单一的最小值点c.当水处在某个点的位置上时,水会等概率地流向不止一个这样的最小值点对一个特…

    2022年6月16日
    42
  • 二进制与或非逻辑计算机,深度学习(1):给感知机做准备,谈谈二进制和与或非门。…

    二进制与或非逻辑计算机,深度学习(1):给感知机做准备,谈谈二进制和与或非门。…过去的五年 人工智能已经是最热门的话题 从理论的完善到实践工具的丰富 慢慢发现 AI 已不再是专属于实验室的一种研究 每一个对此有兴趣的人都能自己动手在自己的电脑上完成属于自己的研究 本系列文章希望从零起步 帮助建立从理论到实践的深度学习知识 而读者不必担心自己的知识储备 只要你会打开电脑从头开始看就足以完成学习 万事开头难 实现人工智能的第一步 我准备先谈谈感知机 Perceptron 的实现 而

    2025年9月4日
    5
  • 安卓设备转移代码_从安卓设备转移数据到苹果手机

    安卓设备转移代码_从安卓设备转移数据到苹果手机JihosoftPhoneTransfer提供一键式解决方案,可在Android和iOS设备之间传输数据,甚至可以轻松备份和恢复您的手机数据。这是非常容易使用。下载电话数据传输并完成安装过程后,您应该看到如下主窗口:第1部分:如何将数据从电话传输到电话1,将您的两个设备连接到计算机在主页上,点击“手机到手机”标签,并使用USB线将两台设备(Android或iOS)连接到计算机。通过电话转接连接…

    2026年1月16日
    3

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号