现代数字图像处理作业—对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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 怎样从本地删除git远程仓库里面的文件

    怎样从本地删除git远程仓库里面的文件

    2021年10月23日
    44
  • QTreeView使用系列教程目录

    QTreeView使用系列教程目录写这篇文章的目的是为了,让大家很容易上手进行QTreeView的开发,所以会先讲下原理,让大家大概明白了,再进行实操。网上很多讲QTreeView+model开发方式的文章,一上来,就是一堆代码,可能对初学者不是很好入手。介于这块知识较多,所以打算出个系列,详细讲解一下各方面的使用。1、《Qt之Model/View框架介绍》:系列教程之一2、《QTreeView+QDirModel…

    2022年6月10日
    45
  • LTE-TDD随机接入过程(3)-RAR(MSG2)以及MSG1的重传

    LTE-TDD随机接入过程(3)-RAR(MSG2)以及MSG1的重传本文涉及到的内容有:(1)UE在什么时候開始接收RAR(2)怎么确定RA-RNTI(3)UE没有收到RAR后的处理(4)RAR的格式1.UE监測RAR文章《LTE-TDD随机接入过程(2)-前导码Pr

    2022年8月4日
    3
  • js编写HTML通过document.cookie写入不了cookie的问题[通俗易懂]

    js编写HTML通过document.cookie写入不了cookie的问题[通俗易懂]js中通过document.cookie写入不了cookie的问题使用VScode编写HTML应用cookie进行存储,发现编写无法读取到cookie的内容,即未能实现cookie存储。作为新手问题,可以考虑这个原因:只有当用在服务器或者本地的服务器中的时候,才能使用这个方法写入cookie,所以VScode没有使用服务器方式?这个原因可以通过方案一尝试解决:打开VScode,点击左侧扩展,输入liveserver,点击安装即可;安装成功后再VS界面右下角可以看到相应提示

    2022年7月16日
    62
  • fwrite和fread函数的用法小结_fwrite和fread

    fwrite和fread函数的用法小结_fwrite和fread1.函数功能用来读写一个数据块。2.一般调用形式fread(buffer,size,count,fp);fwrite(buffer,size,count,fp);3.说明(1)buffer:是一个指针,对fread来说,它是读入数据的存放地址。对fwrite来说,是要输出数据的地址。(2)size:要读写的字节数;(3)count:要

    2022年9月5日
    2
  • Apache配置虚拟主机出现forbidden的问题

    Apache配置虚拟主机出现forbidden的问题1.httpd.conf中配置过网站根目录该配置文件的250行左右,修改了根目录①httpd.conf配置文件中这两处都要修改②httpd-vhosts.conf配置文件中检查DocumentRoot是不是有默认值,有的话要修改根目录③重启Apache服务,清空浏览器缓存2.httpd-vhosts.conf中配置过虚拟主机httpd.conf配置中文件中找到VirtualHost,…

    2022年9月15日
    0

发表回复

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

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