#coding:utf-8
# DCT基作为稀疏基,重建算法为OMP算法 ,图像按列进行处理
# 导入所需的第三方库文件
import numpy as np
import math
from PIL import Image
#读取图像,并变成numpy类型的 array
im = np.array(Image.open('/Users/sanfordzhu/Desktop/lena.bmp')) #图片大小256*256
#生成高斯随机测量矩阵
sampleRate=0.5 #采样率
Phi=np.random.randn(int(256*sampleRate),256)
#生成稀疏基DCT矩阵
mat_dct_1d=np.zeros((256,256))
v=range(256)
for k in range(0,256):
dct_1d=np.cos(np.dot(v,k*math.pi/256))
if k>0:
dct_1d=dct_1d-np.mean(dct_1d)
mat_dct_1d[:,k]=dct_1d/np.linalg.norm(dct_1d)
#随机测量
img_cs_1d=np.dot(Phi,im)
#OMP算法函数
def cs_omp(y,D):#传入参数为y和传感矩阵
L=math.floor(y.shape[0]/4)
residual=y #初始化残差
index=np.zeros((L),dtype=int)
for i in range(L):
index[i]= -1
result=np.zeros((256))
for j in range(L): #迭代次数
product=np.fabs(np.dot(D.T,residual))
pos=np.argmax(produc
压缩感知重构算法之OMP算法---python实现
最新推荐文章于 2024-08-28 18:12:24 发布
本文详细介绍了压缩感知中的Orthogonal Matching Pursuit(OMP)算法,并提供了使用Python实现OMP算法的示例,帮助读者理解其工作原理及应用。
摘要由CSDN通过智能技术生成