机器学习实战:SVD图像压缩

来源:互联网 发布:软件用户手册英文模板 编辑:程序博客网 时间:2024/06/15 11:32
# coding=utf-8from numpy import *from numpy import linalg as ladef printMat(inMat, thresh=0.8):    for i in range(32):        for k in range(32):            if float(inMat[i,k]) > thresh:                print (1,end='')            else: print (0,end='')        print ('')def imgCompress(numSV=3, thresh=0.8):    myl = []    for line in open(r'C:\Users\li\Downloads\machinelearninginaction\Ch14\0_5.txt').readlines():        newRow = []        for i in range(32):            newRow.append(int(line[i]))        myl.append(newRow)    myMat = mat(myl)    print( "****original matrix******")    printMat(myMat, thresh)    U,Sigma,VT = la.svd(myMat)    SigRecon = mat(zeros((numSV, numSV)))    for k in range(numSV):#construct diagonal matrix from vector        SigRecon[k,k] = Sigma[k]    reconMat = U[:,:numSV]*SigRecon*VT[:numSV,:]    print ("****reconstructed matrix using %d singular values******" % numSV)    printMat(reconMat, thresh)    imgCompress()

****original matrix******
00000000000000110000000000000000
00000000000011111100000000000000
00000000000111111110000000000000
00000000001111111111000000000000
00000000111111111111100000000000
00000001111111111111110000000000
00000000111111111111111000000000
00000000111111100001111100000000
00000001111111000001111100000000
00000011111100000000111100000000
00000011111100000000111110000000
00000011111100000000011110000000
00000011111100000000011110000000
00000001111110000000001111000000
00000011111110000000001111000000
00000011111100000000001111000000
00000001111100000000001111000000
00000011111100000000001111000000
00000001111100000000001111000000
00000001111100000000011111000000
00000000111110000000001111100000
00000000111110000000001111100000
00000000111110000000001111100000
00000000111110000000011111000000
00000000111110000000111111000000
00000000111111000001111110000000
00000000011111111111111110000000
00000000001111111111111110000000
00000000001111111111111110000000
00000000000111111111111000000000
00000000000011111111110000000000
00000000000000111111000000000000
****reconstructed matrix using 3 singular values******
00000000000000000000000000000000
00000000000000000000000000000000
00000000000010111110000000000000
00000000000011111110000000000000
00000000000111111111000000000000
00000000001111111111110000000000
00000000001111111111110000000000
00000000011100000000111000000000
00000000111100000000111100000000
00000001111100000000111100000000
00000001111100000000011100000000
00000001111100000000011100000000
00000001111100000000011100000000
00000000111100000000001111000000
00000000111100000000001111000000
00000000111100000000001111000000
00000000111100000000001111000000
00000000111100000000001111000000
00000000111100000000001111000000
00000000111100000000001110000000
00000000111100000000001111000000
00000000111100000000001111000000
00000000111100000000001111000000
00000000111100000000001111000000
00000000111100000000001110000000
00000000111100000000111100000000
00000000001111111111111000000000
00000000001111111111110000000000
00000000001111111111110000000000
00000000000011111111110000000000
00000000000011111111100000000000
00000000000000000000000000000000
0 0
原创粉丝点击