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


相关推荐

  • 域名怎么与主机空间绑定的_域名绑定虚拟主机

    域名怎么与主机空间绑定的_域名绑定虚拟主机域名怎么与主机空间绑定2008-07-2623:41由于各种原因,我们有时候需要在一个IP地址上建立多个web站点,在IIS中,我们可能通过简单的设置达到这个目标。  在IIS中,每个Web站点都具有唯一的、由三个部分组成的标识,用来接收和响应请求:  1、IP地址  2、端口号  3、主机头名。  在IIS中,在一个IP地址上建立多个独

    2022年10月15日
    2
  • 计算机网络协议汇总_帧中继是一种什么协议

    计算机网络协议汇总_帧中继是一种什么协议阅读目录1.网络层次划分2.OSI七层网络模型3.IP地址4.子网掩码及网络划分5.ARP/RARP协议6.路由选择协议7.TCP/IP协议8.UDP协议 9.DNS协议10.NAT协议11.DHCP协议12.HTTP协议13.一个举例  计算机网络学习的核心内容就是网络协议的学习。网络…

    2022年9月1日
    7
  • springboot(16)Spring Boot使用单元测试[通俗易懂]

    转载自嘟嘟独立博客本文链接地址:SpringBoot干货系列:(十二)SpringBoot使用单元测试前言这次来介绍下SpringBoot中对单元测试的整合使用,本篇会通过以下4点来介绍,基本满足日常需求Service层单元测试Controller层单元测试新断言assertThat使用单元测试的回滚正文SpringBoot中引入单元测试很简单,依赖…

    2022年4月13日
    103
  • 表单提交后端如何接收数据_html怎么接收表单提交的内容

    表单提交后端如何接收数据_html怎么接收表单提交的内容用POST请求,后台原生接收的一个公式:req.addListener("data",function(chunk){alldata+=chunk;})//当全部传输完毕之后req.addListener("end",function(){console.log(alldata,toString());req.end("success");})现…

    2022年10月6日
    2
  • IntelliJ IDEA卸载与安装

    IntelliJ IDEA卸载与安装一、卸载(首次安装可跳过)导出配置运行卸载程序删除缓存&配置&插件卸载完成二、下载安装(一)官网:官网:http://www.jetbrains.com/idea/download/#section=windows官方文档:http://www.jetbrains.com/help/idea/meet-inte…

    2022年6月15日
    50
  • MYSQL8.0以上版本正确修改ROOT密码[通俗易懂]

    MYSQL8.0以上版本正确修改ROOT密码[通俗易懂]部署环境:安装版本redhatCent7.0MYSQL版本8.0.2.0成功部署完毕后出现故障情况:1.正常启动MYSQL服务后,敲Linux中root账户和密码进入不去。2.从/etc/my.cnf配置文件中加入skip-grant-table后正常登陆,但是不能创建用户等多操作总结来说:想进去mysql后不能操作多指令,操作多指令又不能进去mysql,死…

    2022年5月6日
    95

发表回复

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

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