现代数字图像处理作业—对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)


相关推荐

  • pd.notnull

    pd.notnull

  • java 汉字乱码_Java中文乱码问题

    java 汉字乱码_Java中文乱码问题一、MyEclipse下的java文件中文乱码问题(MyEclipse6.5):解决方法一:Window–àPreferences…–àGeneral–àContentTypes–àText–àJavaSourceFile中Defaultencoding改写成UTF-8(你所需的编码类型)然后Update,OK确定就可以了。二、1、编码编码比较常用的有:UTF-…

  • string null转空字符串(空字符串是什么意思)

    今天在自己之前做的项目中,犯了一个错误,是自己考虑不周。在项目中自己需要,从后台数据库中获取数据,然后将数据转成Int类型。但是自己忽略了数据为空的情况。例如:在这里,String字符串为空,用Integer.parseInt()方法进行转换报错。修改之后如下今天自己的错误,导致现场人员在给客户展…

  • 限制POST参数个数_rest接口限制请求参数

    限制POST参数个数_rest接口限制请求参数Http-Post/Get请求参数值最大限制问题网络编程都离不开Http的get/post请求。get请求没有协议体,只有协议头,请求的参数是直接拼接在url的后面。post有协议体也有协议头,参数值被解析成碎片存储在协议体中,获取是再按照相应的字符集还原参数值。在传参的时候往往会遇到参数值的长度限制问题,下面详细来分享一下个人对最大限制问题的介绍及解决方案。Http-Get请求对于…

  • 如何组装配置属于自己的台式机电脑_台式电脑怎么组装的

    如何组装配置属于自己的台式机电脑_台式电脑怎么组装的如何组装配置属于自己的台式机现在电脑这么普及,大部分人都有自己的电脑,有的是台式机,有的是笔记本。很多朋友配台式机时都是直接去电脑城然后商家给配置方案或者找认识的朋友推荐一套配置方案,但是有些时候会

  • navicat15激活码最新【最新永久激活】

    (navicat15激活码最新)好多小伙伴总是说激活码老是失效,太麻烦,关注/收藏全栈君太难教程,2021永久激活的方法等着你。IntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,下面是详细链接哦~https://javaforall.cn/100143.html70YZDJVTFP-eyJsaWNlbnNlSW…

发表回复

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

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