Нахождение аппроксимации изображения ранга K

#python #pandas #numpy #jupyter-notebook

#python #pandas #numpy #jupyter-записная книжка

Вопрос:

Я пишу функцию, которая находит аппроксимацию ранга изображения. Мне удалось заставить это работать, когда K равно 1 и 2, но я не могу найти способ создать обобщенную функцию. Кроме того, мне успешно удалось создать переменные U / Vh / s, вызвав linalg.svd().

Для ранга 2 я сделал что-то вроде этого, чтобы объединить изображения, и они успешно сработали, чтобы суммировать SVD

 rank1TotalOne = np.dstack((rank1Redone, rank1Greenone, rank1Blueone))
rank1TotalTwo = np.dstack((rank1Redtwo, rank1Greentwo, rank1Bluetwo))

plt.imshow((rank1TotalOne   rank1TotalTwo).astype(int))
  

Теперь я попытался обобщить это во что-то вроде этого, но мои изображения отображаются неправильно.

 k = 10
rankTotal = 0
j = 0
for i in range(0, k):
    while(j < k):
        columnVect = UR[:, j].reshape(300,1)
        rowVect = VhR.T[:,j].reshape(1, 200)
        rank1Red = sR[j] * columnVect * rowVect

        columnVect = UG[:, j].reshape(300,1)
        rowVect = VhG.T[:,j].reshape(1,200)
        rank1Green = sG[j] * columnVect * rowVect

        columnVect = UB[:, j].reshape(300,1)
        rowVect = VhB.T[:,j].reshape(1,200)
        rank1Blue = sB[j] * columnVect * rowVect

        rank1Total = rank1Total   np.dstack((rank1Red, rank1Green, rank1Blue))
        rank1Total = rank1Total.astype(int)
        j = j   1

plt.imshow(rank1Total)
plt.show()
  

Комментарии:

1. Проверьте, как это делается в этой записной книжке github.com/AlexanderNixon/DataScience-Notes/blob/master /…

Ответ №1:

Я действительно дурак, я только что заметил, что в моем коде у меня есть переменные rank1Total и rankTotal.

 rankTotal = rankTotal   np.dstack((rank1Red, rank1Green, rank1Blue))
rankTotal = rankTotal.astype(int)
j = j   1

plt.imshow(rankTotal)
plt.show()
  

Мне просто нужно было перейти от rank1Total к rankTotal, это потому, что я хотел, чтобы в rankTotal все сохранялось.