现代数字图像处理作业—对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证据理论进行信息融合,在噪声修复阶段,对于检测窗口内非噪声点的中值,利用距离矩阵和偏差矩阵进行修正。

 

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

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

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)
blank

相关推荐

  • linux系统重启网卡命令_centos 7重启网卡命令

    linux系统重启网卡命令_centos 7重启网卡命令大家在实际工作中,经常会遇到Linux系统进行重启网卡的操作,那么具体如何进行重启呢?下面就由学习啦小编跟大家分享一下操作步骤吧,希望对大家有所帮助~linux系统重启网卡的方法一、servicenetworkrestart1、首先用CRT工具连接到Linux命令行界面。或者进入操作系统界面,选择终端输入。2、如果我们对所有的网卡进行重启操作。可以尝试输入:servicenetwork…

  • 很重要的一点

    很重要的一点

  • vbs远程木马_vbs 访问webservice

    vbs远程木马_vbs 访问webservicexp、2003开3389+非net创建管理用户+Shift后门+自删除脚本+提权VBS整理收集2010年12月07日  xp、2003开3389+非net创建管理用户+Shift后门+自删除脚本  vbsonerrorresumenext  constHKEY_LOCAL_MACHINE=&H80000002  strComputer="."  Se…

  • pycharm如何配置git_网络设备配置基础实训总结

    pycharm如何配置git_网络设备配置基础实训总结PyCharm与Github配置使用总结

  • centos7怎么关机_centos7重启后网卡关闭

    centos7怎么关机_centos7重启后网卡关闭开启NetworkManagercat<<EOF>/etc/NetworkManager/nm-system-settings.conf[main]plugins=ifupdown,keyfile[ifupdown]managed=trueEOFreboot关闭NetworkManagersystemctlstopNetworkManagersystemctldisableNetworkManagerrm-rf/var/lib/N…

  • 什么是宽字节注入_百分号两个字节

    什么是宽字节注入_百分号两个字节宽字节注入原理:宽字节(两字节)带来的安全问题主要是吃ASCII字符(一字节)的现象,使用一些特殊字符来”吃掉“经过转义符“\”。在重新详细了解宽字节注入之前,我认为宽字节注入只是出现在网站使用GBK编码的时代,现在已经很少出现了,但是实际上宽字节不只是出现在GBK编码中。在PHP中,通过iconv()进行编码转换时,也可能出现宽字节注入。还有一个误区:这里的编码问题不是出现在HTML页面…

    2022年10月15日

发表回复

您的电子邮箱地址不会被公开。

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