2021-7-7 山东大学软件学院暑期项目实训日志-第二周 02

目录

图像处理算法的挑选及运行

二,二进制小波变换-python实现

1.1二维图像单级变换:dwt2()

1.2算法运行:

2.1二维图像多级分解:wavedec2()

2.2算法运行

3.1【图像处理】python小波变换

3.2算法运行


图像处理算法的挑选及运行

本周我们小组的任务主要是挑选本次项目实训中所要用到的最基本图像处理算法(于CSDN或Github上寻找),并对我们小组每个人找到的算法进行比对,最后计划使用一个效果最好的算法来完成接下来的任务。下边是我在本次任务中找到并尝试的集中算法:

二,二进制小波变换-python实现

参考自如下两篇文章:https://blog.csdn.net/baidu_27643275/article/details/85058074?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522162561989516780366522724%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fall.%2522%257D&request_id=162561989516780366522724&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~first_rank_v2~rank_v29-2-85058074.first_rank_v2_pc_rank_v29&utm_term=%E4%BA%8C%E8%BF%9B%E5%B0%8F%E6%B3%A2%E5%8F%98%E6%8D%A2python&spm=1018.2226.3001.4187

https://blog.csdn.net/u011285477/article/details/104162355?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522162561989516780366522724%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fall.%2522%257D&request_id=162561989516780366522724&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~first_rank_v2~rank_v29-4-104162355.first_rank_v2_pc_rank_v29&utm_term=%E4%BA%8C%E8%BF%9B%E5%B0%8F%E6%B3%A2%E5%8F%98%E6%8D%A2python&spm=1018.2226.3001.4187

1.1二维图像单级变换:dwt2()

代码:

import numpy as np
import pywt
import cv2
import matplotlib.pyplot as plt

img = cv2.imread("maomi.jpg")
img = cv2.resize(img, (448, 448))
# 将多通道图像变为单通道图像
img = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY).astype(np.float32)

plt.figure('二维小波一级变换')
coeffs = pywt.dwt2(img, 'haar')
cA, (cH, cV, cD) = coeffs

plt.subplot(221), plt.imshow(cA, 'gray'), plt.title("A")
plt.subplot(222), plt.imshow(cH, 'gray'), plt.title("H")
plt.subplot(223), plt.imshow(cV, 'gray'), plt.title("V")
plt.subplot(224), plt.imshow(cD, 'gray'), plt.title("D")
plt.show()

尝试运行时,遇到了如下错误:

ModuleNotFoundError: No module named 'pywt'

搜索之后,在cmd中输入:

pip install PyWavelets

即可解决问题

1.2算法运行:

对此图片进行处理:

此为处理结果:

2.1二维图像多级分解:wavedec2()

实现代码:

import numpy as np
import pywt
import cv2
import matplotlib.pyplot as plt

img = cv2.imread("maomi.jpg")
img = cv2.resize(img, (448, 448))
# img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB).astype(np.float32)
img = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY).astype(np.float32)

plt.figure('二维图像多级分解')
coeffs = pywt.wavedec2(img, 'haar', level=2)
cA2, (cH2, cV2, cD2), (cH1, cV1, cD1) = coeffs

# 将每个子图的像素范围都归一化到与CA2一致  CA2 [0,255* 2**level]
AH2 = np.concatenate([cA2, cH2+510], axis=1)
VD2 = np.concatenate([cV2+510, cD2+510], axis=1)
cA1 = np.concatenate([AH2, VD2], axis=0)

AH = np.concatenate([cA1, (cH1+255)*2], axis=1)
VD = np.concatenate([(cV1+255)*2, (cD1+255)*2], axis=1)
img = np.concatenate([AH, VD], axis=0)

plt.imshow(img,'gray')
plt.title('2D WT')
plt.show()

2.2算法运行

3.1【图像处理】python小波变换

具体代码:

import cv2
import numpy as np
from pywt import dwt2, idwt2
 
# 读取灰度图
img = cv2.imread('maomi.jpg',0)
 
# 对img进行haar小波变换:
cA,(cH,cV,cD)=dwt2(img,'haar')
 
# 小波变换之后,低频分量对应的图像:
cv2.imwrite('maomi.png',np.uint8(cA/np.max(cA)*255))
# 小波变换之后,水平方向高频分量对应的图像:
cv2.imwrite('maomi_h.png',np.uint8(cH/np.max(cH)*255))
# 小波变换之后,垂直平方向高频分量对应的图像:
cv2.imwrite('maomi_v.png',np.uint8(cV/np.max(cV)*255))
# 小波变换之后,对角线方向高频分量对应的图像:
cv2.imwrite('maomi_d.png',np.uint8(cD/np.max(cD)*255))
 
# 根据小波系数重构回去的图像
rimg = idwt2((cA,(cH,cV,cD)), 'haar')
cv2.imwrite('rimg.png',np.uint8(rimg))

3.2算法运行

 如下为处理结果图片:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值