SVD实战

SVD实战

奇异值分解(Singular Value Decomposition, SVD)是一种强大的矩阵分解技术,广泛应用于数据分析、信号处理和机器学习等领域。SVD 将一个矩阵分解成三个矩阵的乘积,提供了对矩阵结构的深刻理解

SVD 的应用

1.降维:通过选择较大的奇异值对应的奇异向量,可以实现数据降维。

2.数据压缩:SVD 可以用于图像压缩,通过保留主要的奇异值实现。

3.去噪:SVD 可以去除数据中的噪声,保留主要信息。

4.矩阵求逆:对于奇异矩阵,SVD 提供了一种稳定的求逆方法。

注意事项

SVD 的计算复杂度较高,对于大规模数据可能需要高效的算法实现。

在实际应用中,需要根据具体问题选择适当的奇异值数量,以平衡数据保真度和降维效果。

SVD 对数据的尺度敏感,通常需要对数据进行标准化处理。

输入图像

import numpy as np
import matplotlib.pyplot as plt
image_path = 'svd.jpg'
origin_image = plt.imread(image_path)
plt.figure(figsize= (12, 12))
plt.title("Origin Image")
plt.imshow(origin_image)
plt.show()

在这里插入图片描述

plt.figure(figsize= (12, 12))
plt.title("Origin Image")
plt.imshow(origin_image[:,:,1])
plt.show()

在这里插入图片描述

origin_image[:,:,1].shape
(768, 1024)

SVD

U, sigma, V = np.linalg.svd(origin_image[:, :, 1])
V = V.T
V
array([[-0.03158318, -0.00617441,  0.00136541, ..., -0.0109706 ,
        -0.01702558,  0.02536314],
       [-0.03158018, -0.00670499,  0.00137716, ...,  0.03731509,
        -0.01889344, -0.0205773 ],
       [-0.03157125, -0.0065555 ,  0.00062098, ..., -0.00782779,
        -0.00296325,  0.01370857],
       ...,
       [-0.03474661, -0.01304685, -0.02009231, ...,  0.31317443,
        -0.11922565, -0.01386044],
       [-0.0347574 , -0.01276237, -0.02094024, ..., -0.15301279,
         0.35889614, -0.2471532 ],
       [-0.03478663, -0.01168526, -0.02286564, ...,  0.02655172,
        -0.20473984,  0.23718985]])
U
array([[-0.03927727,  0.03278119,  0.02825349, ..., -0.00737246,
        -0.00240451, -0.0052367 ],
       [-0.03931758,  0.03018904,  0.02822457, ...,  0.02057937,
         0.00545296, -0.00779076],
       [-0.03948313,  0.02763754,  0.02778271, ..., -0.00171162,
        -0.00962843,  0.00393314],
       ...,
       [-0.02671037,  0.01923504,  0.01801563, ...,  0.01131095,
         0.01017465,  0.01109686],
       [-0.02671571,  0.01872113,  0.01807405, ..., -0.00890887,
        -0.02077799, -0.00832494],
       [-0.02675729,  0.0206782 ,  0.01745734, ...,  0.01803501,
         0.01155526,  0.00311878]])
sigma
array([1.55727106e+05, 1.33149229e+04, 1.25316679e+04, 8.52808991e+03,
       6.12607001e+03, 5.12896175e+03, 5.08754157e+03, 3.92851524e+03,
       3.80728436e+03, 3.50062959e+03, 3.47584940e+03, 3.05461773e+03,
       3.03604381e+03, 2.82914691e+03, 2.73355004e+03, 2.62163629e+03,
       2.56919367e+03, 2.56578726e+03, 2.36296350e+03, 2.33933981e+03,
       2.28144349e+03, 2.23889390e+03, 2.05902578e+03, 2.01827581e+03,
       1.99642009e+03, 1.92657673e+03, 1.89145276e+03, 1.85240447e+03,
       1.76660353e+03, 1.67952372e+03, 1.62327851e+03, 1.59065771e+03,
       1.55816030e+03, 1.52062265e+03, 1.50274403e+03, 1.46611776e+03,
       1.44853856e+03, 1.39499144e+03, 1.34141898e+03, 1.33175477e+03,
       1.30691025e+03, 1.29625431e+03, 1.27948372e+03, 1.27353255e+03,
       1.25351083e+03, 1.21322939e+03, 1.17832185e+03, 1.17119663e+03,
       1.16380853e+03, 1.12970615e+03, 1.10809023e+03, 1.09917064e+03,
       1.09181138e+03, 1.06769151e+03, 1.06444638e+03, 1.03892972e+03,
       1.03188536e+03, 1.02049781e+03, 1.00361371e+03, 9.93146293e+02,
       9.81818494e+02, 9.65833425e+02, 9.56414522e+02, 9.35675110e+02,
       9.23076083e+02, 9.13217919e+02, 9.04629169e+02, 8.94478548e+02,
       8.88905702e+02, 8.75385342e+02, 8.70267641e+02, 8.60694445e+02,
       8.60042703e+02, 8.56345163e+02, 8.37132920e+02, 8.24338418e+02,
       8.13019793e+02, 8.08022026e+02, 7.95501238e+02, 7.88655977e+02,
       7.79278812e+02, 7.72036041e+02, 7.65335813e+02, 7.63346852e+02,
       7.55806056e+02, 7.49859203e+02, 7.41484055e+02, 7.34196479e+02,
       7.30982751e+02, 7.20876565e+02, 7.19608494e+02, 7.12606610e+02,
       7.06113949e+02, 7.00433568e+02, 6.97514449e+02, 6.89577554e+02,
       6.82365450e+02, 6.77590851e+02, 6.71610086e+02, 6.67588145e+02,
       6.59411719e+02, 6.58348691e+02, 6.56375202e+02, 6.49756975e+02,
       6.48492947e+02, 6.38721408e+02, 6.34993657e+02, 6.32016126e+02,
       6.22556807e+02, 6.15732335e+02, 6.10372907e+02, 6.05440578e+02,
       6.03741623e+02, 6.02860787e+02, 5.98741832e+02, 5.96549067e+02,
       5.89417065e+02, 5.87581195e+02, 5.86063547e+02, 5.79601180e+02,
       5.77891397e+02, 5.72937885e+02, 5.66993229e+02, 5.64915791e+02,
       5.59508762e+02, 5.56319325e+02, 5.50440065e+02, 5.46992552e+02,
       5.46489196e+02, 5.40123040e+02, 5.36975270e+02, 5.32077433e+02,
       5.30586612e+02, 5.27120735e+02, 5.23711827e+02, 5.20078478e+02,
       5.16714432e+02, 5.15154428e+02, 5.12942063e+02, 5.10518992e+02,
       5.05893250e+02, 5.04639921e+02, 4.97446247e+02, 4.92826105e+02,
       4.91327415e+02, 4.87836489e+02, 4.83453355e+02, 4.79959583e+02,
       4.76743212e+02, 4.74780306e+02, 4.73233396e+02, 4.69592952e+02,
       4.67774523e+02, 4.66351384e+02, 4.62385653e+02, 4.56240821e+02,
       4.53546798e+02, 4.51066488e+02, 4.48911025e+02, 4.46598465e+02,
       4.43332178e+02, 4.41467450e+02, 4.40737463e+02, 4.37511421e+02,
       4.33078802e+02, 4.31801353e+02, 4.28370322e+02, 4.25613910e+02,
       4.25037987e+02, 4.23042374e+02, 4.19597100e+02, 4.17827255e+02,
       4.13797561e+02, 4.11884780e+02, 4.10091664e+02, 4.04508381e+02,
       4.03117096e+02, 3.99457311e+02, 3.97995136e+02, 3.95075491e+02,
       3.93012216e+02, 3.88706834e+02, 3.85785589e+02, 3.83485622e+02,
       3.81563615e+02, 3.79646751e+02, 3.75883953e+02, 3.75350533e+02,
       3.71541570e+02, 3.68701447e+02, 3.67851403e+02, 3.63270451e+02,
       3.61086596e+02, 3.59666305e+02, 3.54113603e+02, 3.53239072e+02,
       3.52534590e+02, 3.51233241e+02, 3.47742604e+02, 3.45841490e+02,
       3.43165720e+02, 3.42723415e+02, 3.39084103e+02, 3.37289321e+02,
       3.36865392e+02, 3.35431461e+02, 3.35219209e+02, 3.32374154e+02,
       3.30558588e+02, 3.29122331e+02, 3.26987294e+02, 3.23746808e+02,
       3.21999382e+02, 3.18633562e+02, 3.18279237e+02, 3.16675563e+02,
       3.14167537e+02, 3.12257046e+02, 3.09826623e+02, 3.08081238e+02,
       3.05995538e+02, 3.03764736e+02, 3.03101093e+02, 3.02884476e+02,
       3.00325162e+02, 2.98674272e+02, 2.97972089e+02, 2.97679755e+02,
       2.96157725e+02, 2.94031701e+02, 2.91932379e+02, 2.89275955e+02,
       2.88407927e+02, 2.86665266e+02, 2.84888070e+02, 2.81900119e+02,
       2.80935752e+02, 2.77881195e+02, 2.77422964e+02, 2.74383253e+02,
       2.73125189e+02, 2.72256764e+02, 2.71173140e+02, 2.68094438e+02,
       2.66536095e+02, 2.64858970e+02, 2.63931721e+02, 2.62217063e+02,
       2.61853263e+02, 2.60095154e+02, 2.58717519e+02, 2.57896728e+02,
       2.57111836e+02, 2.54928670e+02, 2.53847454e+02, 2.52004835e+02,
       2.50995437e+02, 2.48305529e+02, 2.47011191e+02, 2.45139072e+02,
       2.43956470e+02, 2.43059629e+02, 2.41795796e+02, 2.41184581e+02,
       2.39950132e+02, 2.38950804e+02, 2.38141268e+02, 2.36994283e+02,
       2.36027860e+02, 2.35133923e+02, 2.32375201e+02, 2.30723022e+02,
       2.30454896e+02, 2.28758060e+02, 2.27339101e+02, 2.25435636e+02,
       2.24862225e+02, 2.23258959e+02, 2.23051052e+02, 2.22221440e+02,
       2.20519047e+02, 2.19803720e+02, 2.18914541e+02, 2.18131595e+02,
       2.17457400e+02, 2.15677509e+02, 2.13728825e+02, 2.13115800e+02,
       2.12105073e+02, 2.11088887e+02, 2.09714117e+02, 2.09101513e+02,
       2.08433337e+02, 2.06629158e+02, 2.06055256e+02, 2.04364823e+02,
       2.03396826e+02, 2.02356330e+02, 2.01194675e+02, 1.99730228e+02,
       1.98845748e+02, 1.98055848e+02, 1.96996572e+02, 1.95933176e+02,
       1.94810070e+02, 1.92785330e+02, 1.92299323e+02, 1.90330576e+02,
       1.89980347e+02, 1.88399377e+02, 1.87669406e+02, 1.85683418e+02,
       1.84210948e+02, 1.83392983e+02, 1.83212139e+02, 1.82858107e+02,
       1.81845721e+02, 1.81295796e+02, 1.80605323e+02, 1.79647222e+02,
       1.78406907e+02, 1.77188745e+02, 1.75944517e+02, 1.75668742e+02,
       1.75005646e+02, 1.73669091e+02, 1.72796223e+02, 1.72374103e+02,
       1.71686989e+02, 1.71083622e+02, 1.69540048e+02, 1.68882045e+02,
       1.68366208e+02, 1.66135549e+02, 1.65096677e+02, 1.64542372e+02,
       1.64269995e+02, 1.62790561e+02, 1.61748151e+02, 1.60555622e+02,
       1.59892071e+02, 1.59087839e+02, 1.58656441e+02, 1.57494587e+02,
       1.56885309e+02, 1.56074112e+02, 1.55413946e+02, 1.53545834e+02,
       1.52492636e+02, 1.52009990e+02, 1.51177181e+02, 1.49968620e+02,
       1.49709649e+02, 1.48879102e+02, 1.48268517e+02, 1.47149021e+02,
       1.46806761e+02, 1.46637100e+02, 1.45971717e+02, 1.45234628e+02,
       1.43613651e+02, 1.43294991e+02, 1.42376361e+02, 1.41455550e+02,
       1.40786885e+02, 1.40128154e+02, 1.39347148e+02, 1.38400947e+02,
       1.37879007e+02, 1.37124330e+02, 1.36335996e+02, 1.36027531e+02,
       1.34746620e+02, 1.34109215e+02, 1.33765348e+02, 1.32917990e+02,
       1.32370172e+02, 1.31673744e+02, 1.30840060e+02, 1.30018784e+02,
       1.29130389e+02, 1.27902048e+02, 1.27541498e+02, 1.27079119e+02,
       1.26114538e+02, 1.25670556e+02, 1.25190543e+02, 1.23893036e+02,
       1.23695470e+02, 1.22797533e+02, 1.21234884e+02, 1.20541318e+02,
       1.19839663e+02, 1.19479821e+02, 1.19164007e+02, 1.18580415e+02,
       1.18188638e+02, 1.17134733e+02, 1.15836876e+02, 1.15335867e+02,
       1.14814155e+02, 1.14380955e+02, 1.13954826e+02, 1.12805058e+02,
       1.12048481e+02, 1.11151074e+02, 1.10473109e+02, 1.09822955e+02,
       1.09535545e+02, 1.09174289e+02, 1.07919911e+02, 1.07481333e+02,
       1.06870715e+02, 1.06376087e+02, 1.05722307e+02, 1.05444296e+02,
       1.04519630e+02, 1.04057574e+02, 1.03180521e+02, 1.02566728e+02,
       1.01976996e+02, 1.01104902e+02, 1.00903979e+02, 1.00016449e+02,
       9.89405686e+01, 9.80217296e+01, 9.72893268e+01, 9.68327111e+01,
       9.63416415e+01, 9.55237465e+01, 9.51324325e+01, 9.46557715e+01,
       9.38495232e+01, 9.37681929e+01, 9.33672483e+01, 9.26494412e+01,
       9.21302033e+01, 9.14903032e+01, 9.08477884e+01, 8.99286304e+01,
       8.95610467e+01, 8.92614910e+01, 8.82223079e+01, 8.79325240e+01,
       8.70570110e+01, 8.62239646e+01, 8.55383467e+01, 8.46603171e+01,
       8.43124415e+01, 8.38008777e+01, 8.36838999e+01, 8.33268587e+01,
       8.31684860e+01, 8.23766818e+01, 8.11830849e+01, 8.10870364e+01,
       8.00773303e+01, 7.99591608e+01, 7.93791247e+01, 7.89069582e+01,
       7.83576153e+01, 7.81210796e+01, 7.70898309e+01, 7.66924622e+01,
       7.65555818e+01, 7.59824630e+01, 7.49764294e+01, 7.44194363e+01,
       7.38505370e+01, 7.31955435e+01, 7.28758060e+01, 7.24353658e+01,
       7.15441145e+01, 7.06427071e+01, 7.02095234e+01, 6.99120279e+01,
       6.95071543e+01, 6.93459672e+01, 6.86035584e+01, 6.73624773e+01,
       6.68373569e+01, 6.57739435e+01, 6.55136829e+01, 6.49359218e+01,
       6.47449922e+01, 6.45259368e+01, 6.38494815e+01, 6.35500085e+01,
       6.32276126e+01, 6.23472063e+01, 6.22879291e+01, 6.15418541e+01,
       6.10968328e+01, 6.09842002e+01, 6.05476031e+01, 6.00513315e+01,
       5.97569615e+01, 5.87049151e+01, 5.80220295e+01, 5.78658348e+01,
       5.72338413e+01, 5.69207073e+01, 5.61500939e+01, 5.57453202e+01,
       5.54153624e+01, 5.50880848e+01, 5.43549806e+01, 5.37849968e+01,
       5.31808309e+01, 5.25320043e+01, 5.24408672e+01, 5.23036794e+01,
       5.20613844e+01, 5.15230405e+01, 5.04698031e+01, 5.02114040e+01,
       4.94994406e+01, 4.88060768e+01, 4.87297496e+01, 4.84565606e+01,
       4.75462916e+01, 4.69829580e+01, 4.67844625e+01, 4.60433247e+01,
       4.56738138e+01, 4.51308476e+01, 4.48148559e+01, 4.43993383e+01,
       4.40196115e+01, 4.35722334e+01, 4.28426762e+01, 4.25504429e+01,
       4.23851016e+01, 4.17579903e+01, 4.13435616e+01, 4.06732616e+01,
       4.06246707e+01, 4.00717510e+01, 3.94647699e+01, 3.92167879e+01,
       3.85884243e+01, 3.83853207e+01, 3.79535470e+01, 3.75593633e+01,
       3.70722656e+01, 3.68155478e+01, 3.64804684e+01, 3.56909129e+01,
       3.51921940e+01, 3.51240952e+01, 3.49395147e+01, 3.42081138e+01,
       3.37308469e+01, 3.34898948e+01, 3.32163277e+01, 3.30852694e+01,
       3.24836234e+01, 3.18262771e+01, 3.14992041e+01, 3.14148728e+01,
       3.09023693e+01, 3.05736480e+01, 3.03235535e+01, 2.99296163e+01,
       2.98919889e+01, 2.92521709e+01, 2.87405510e+01, 2.82838192e+01,
       2.79489671e+01, 2.77729820e+01, 2.72886350e+01, 2.66546360e+01,
       2.65040606e+01, 2.59560693e+01, 2.57469640e+01, 2.52710886e+01,
       2.49454360e+01, 2.45746414e+01, 2.42800806e+01, 2.40546111e+01,
       2.37157422e+01, 2.36646395e+01, 2.34489597e+01, 2.33016577e+01,
       2.25694984e+01, 2.20977164e+01, 2.20532460e+01, 2.18454128e+01,
       2.13870519e+01, 2.11831648e+01, 2.09072072e+01, 2.07049534e+01,
       2.01538798e+01, 1.99550300e+01, 1.98312658e+01, 1.95396444e+01,
       1.93541172e+01, 1.91429122e+01, 1.86788340e+01, 1.84851069e+01,
       1.82831435e+01, 1.79983775e+01, 1.77666258e+01, 1.75163049e+01,
       1.74807049e+01, 1.71642520e+01, 1.69286375e+01, 1.66620752e+01,
       1.62940261e+01, 1.61068585e+01, 1.58799600e+01, 1.55299293e+01,
       1.53970444e+01, 1.50968575e+01, 1.49987164e+01, 1.48766129e+01,
       1.45086178e+01, 1.42208736e+01, 1.40376788e+01, 1.38834255e+01,
       1.37288912e+01, 1.35863001e+01, 1.33978361e+01, 1.31406381e+01,
       1.30677360e+01, 1.27454662e+01, 1.26849155e+01, 1.25160609e+01,
       1.22656156e+01, 1.20906663e+01, 1.18592791e+01, 1.17016916e+01,
       1.16001127e+01, 1.14182877e+01, 1.12833451e+01, 1.10913818e+01,
       1.08951826e+01, 1.06052727e+01, 1.05624191e+01, 1.04604758e+01,
       1.01649964e+01, 1.00891131e+01, 9.91780901e+00, 9.81812089e+00,
       9.68162143e+00, 9.52348237e+00, 9.25956276e+00, 9.13244611e+00,
       9.04309913e+00, 8.95541388e+00, 8.79071974e+00, 8.74210071e+00,
       8.44226012e+00, 8.36793150e+00, 8.24176023e+00, 8.01234748e+00,
       7.93519266e+00, 7.81989662e+00, 7.70852451e+00, 7.56007216e+00,
       7.47572551e+00, 7.39325041e+00, 7.25693166e+00, 7.18232013e+00,
       7.06328920e+00, 6.92849712e+00, 6.85630795e+00, 6.76479925e+00,
       6.64868227e+00, 6.63374378e+00, 6.50786034e+00, 6.45777021e+00,
       6.31688235e+00, 6.20411681e+00, 6.08989619e+00, 5.99826598e+00,
       5.96923633e+00, 5.93386831e+00, 5.79545788e+00, 5.75618098e+00,
       5.65456358e+00, 5.59615398e+00, 5.55861553e+00, 5.51163230e+00,
       5.41931393e+00, 5.36718302e+00, 5.33493500e+00, 5.28177532e+00,
       5.13783580e+00, 5.06072270e+00, 5.03507328e+00, 5.00471297e+00,
       4.92508591e+00, 4.91507251e+00, 4.84796869e+00, 4.81593520e+00,
       4.69811952e+00, 4.68396955e+00, 4.60308194e+00, 4.52040574e+00,
       4.50430862e+00, 4.45961397e+00, 4.44201104e+00, 4.35702780e+00,
       4.34072627e+00, 4.27771408e+00, 4.23722297e+00, 4.21598938e+00,
       4.13525207e+00, 4.07480912e+00, 4.01523242e+00, 3.99972458e+00,
       3.94472736e+00, 3.89232976e+00, 3.87199002e+00, 3.81817129e+00,
       3.80843520e+00, 3.73938021e+00, 3.69761678e+00, 3.62558449e+00,
       3.56707498e+00, 3.55337688e+00, 3.54155618e+00, 3.47968859e+00,
       3.40875854e+00, 3.39909004e+00, 3.34477642e+00, 3.30322441e+00,
       3.27058789e+00, 3.21499488e+00, 3.18120141e+00, 3.12736200e+00,
       3.09268437e+00, 3.02318731e+00, 2.95537747e+00, 2.95255041e+00,
       2.90767453e+00, 2.88168026e+00, 2.84859965e+00, 2.78136027e+00,
       2.75795820e+00, 2.73190524e+00, 2.71364202e+00, 2.65489905e+00,
       2.64130696e+00, 2.61322997e+00, 2.51493861e+00, 2.48565249e+00,
       2.47203742e+00, 2.46436369e+00, 2.44459818e+00, 2.36289704e+00,
       2.32301501e+00, 2.31741353e+00, 2.26381289e+00, 2.21830214e+00,
       2.13447395e+00, 2.09422138e+00, 2.03397790e+00, 2.01646043e+00,
       1.93237366e+00, 1.92418864e+00, 1.87301113e+00, 1.82635429e+00,
       1.71573434e+00, 1.66321510e+00, 1.49566650e+00, 1.44337564e+00])
# assert np.array(np.dot(np.dot(U,np.diag(sigma)),V),dtype='uint8').all()== np.array(origin_image[:, :768, 0].all())
n_sigmas = 0
temp = 0
rate = 0.2
total = np.sum(sigma)
while (temp / total ) < rate:
    temp += sigma[n_sigmas]
    n_sigmas += 1
n_sigmas

1

S = np.zeros((n_sigmas, n_sigmas))
for i in range(n_sigmas):
    S[i, i] = sigma[i]
result = (U[:, 0:n_sigmas].dot(S)).dot(V[:,0:n_sigmas].T)
plt.figure(figsize= (12, 12))
plt.title("Compressed Image")
plt.imshow(result)
plt.show()

在这里插入图片描述

  • 8
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值