# -*- coding:utf-8 -*-
'''
中值滤波器在椒盐噪声中的不同应用
'''
import numpy as np
# Different applied median filter
class Damf(object):
def binary_matrix(self, A):
'''Set the noise entry to 0.Set regular entry to 1'''
B = np.zeros(np.shape(A))
B[(A == 255) | (A == 0)] = 0
B[(A != 255) & (A != 0)] = 1
return B
def t_symmetric_pad_matrix(self, A, t):
m, n = np.shape(A)
img_pad = np.zeros((m + t, n + t))
img_pad[t:, t:] = A
left_up = np.rot90(np.rot90(A[:t, :t]))
up = np.flip(A[:t, :], 0)
right_up = np.rot90(np.rot90(A[:t, -t:]))
left = np.flip(A[:, 0:t], 1)
right = np.flip(A[:, -t:], 1)
left_down = np.rot90(np.rot90(A[-t:, :t]))
dowm = np.flip(A[-t:, :], 0)
right_down = np.rot90(np.rot90(A[-t:, -t:]))
up_h = np.hstack((left_up, up, right_up)) # h:horizontal
middle_h = np.hstack((left, A, right))
down_h = np.hstack((left_down, dowm, right_down))
img_pad = np.vstack((up_h, middle_h, down_h))
return img_pad
def k_approximate_matrix(self, img_pad, i, j, k, t):
k_approximate_mat = img_pad[(i + t - k):(i + t + k + 1), (j + t - k):(j + t + k + 1)]
return k_approximate_mat
def regular_row_matrix(self, img_k_approximate):
H = img_k_approximate.flatten()
H = np.sort(H)
R = H[(H != 255) & (H != 0)]
return R
def process_image(self, nim):
t1 = 3
img_DAMF = nim.copy()
B = self.binary_matrix(nim)
P_A_3 = self.t_symmetric_pad_matrix(nim, t1)
P_B_3 = self.t_symmetric_pad_matrix(B, t1)
m, n = np.shape(nim)
for i in range(m):
for j in range(n):
if B[i, j] == 0:
B_ij_1 = self.k_approximate_matrix(P_B_3, i, j, 1, t1)
B_ij_2 = self.k_approximate_matrix(P_B_3, i, j, 2, t1)
B_ij_3 = self.k_approximate_matrix(P_B_3, i, j, 3, t1)
if B_ij_1.any() > 0: # 使用3x3板
A_ij_1 = self.k_approximate_matrix(P_A_3, i, j, 1, t1)
R_ij_1 = self.regular_row_matrix(A_ij_1)
mR_ij_1 = np.median(R_ij_1)
img_DAMF[i, j] = mR_ij_1
elif B_ij_2.any() > 0: # 使用5x5模板
A_ij_2 = self.k_approximate_matrix(P_A_3, i, j, 2, t1)
R_ij_2 = self.regular_row_matrix(A_ij_2)
mR_ij_2 = np.median(R_ij_2)
img_DAMF[i, j] = mR_ij_2
elif B_ij_3.any() > 0: # 使用7x7模板
A_ij_3 = self.k_approximate_matrix(P_A_3, i, j, 3, t1)
R_ij_3 = self.regular_row_matrix(A_ij_3)
mR_ij_3 = np.median(R_ij_3)
img_DAMF[i, j] = mR_ij_3
B = self.binary_matrix(img_DAMF)
t2 = 1
P_A_1 = self.t_symmetric_pad_matrix(img_DAMF, t2)
P_B_1 = self.t_symmetric_pad_matrix(B, t2)
for i in range(m):
for j in range(n):
if B[i, j] == 0:
B_ij_1 = self.k_approximate_matrix(P_B_1, i, j, 1, t2)
if B_ij_1.any() > 0:
A_ij_1 = self.k_approximate_matrix(P_A_1, i, j, 1, t2)
R_ij_1 = self.regular_row_matrix(A_ij_1)
mR_ij_1 = np.median(R_ij_1)
img_DAMF[i, j] = mR_ij_1
return img_DAMF
没有合适的资源?快使用搜索试试~ 我知道了~
基于Python实现遗传算法对图像进行去噪(源码+图片).rar
共7个文件
py:5个
tiff:1个
ehga:1个
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
5星 · 超过95%的资源 2 下载量 116 浏览量
2023-03-27
20:50:37
上传
评论 1
收藏 246KB RAR 举报
温馨提示
1、资源内容:基于Python实现遗传算法对图像进行去噪(源码+图片).rar 2、适用人群:计算机,电子信息工程、数学等专业的大学生课程设计、期末大作业或毕业设计,作为“参考资料”使用。 3、更多仿真源码和数据集下载列表(自行寻找自己需要的):https://blog.csdn.net/m0_62143653?type=download 4、免责声明:本资源作为“参考资料”而不是“定制需求”不一定能够满足所有人的需求,需要有一定的基础能够看懂代码,能够自行调试,能够自行添加功能修改代码。由于作者大厂工作较忙,不提供答疑服务,如不存在资源缺失问题概不负责,谢谢理解。
资源推荐
资源详情
资源评论
收起资源包目录
基于Python实现遗传算法对图像进行去噪(源码+图片).rar (7个子文件)
基于Python实现遗传算法对图像进行去噪(源码+图片)
lena.tiff 244KB
main.py 3KB
damf.py 4KB
ehga 7KB
nafsmf.py 2KB
image_evaluate.py 2KB
awmf.py 4KB
共 7 条
- 1
资源评论
- m0_748125482023-11-25资源很受用,资源主总结的很全面,内容与描述一致,解决了我当下的问题。
- 2301_770572092023-11-27资源值得借鉴的内容很多,那就浅学一下吧,值得下载!
Matlab仿真实验室
- 粉丝: 3w+
- 资源: 2404
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功