Why i dont see my image after pca analysis?
조회 수: 1 (최근 30일)
이전 댓글 표시
Hello, I am working on an image to reduce its size without comprising much on the quality. i gound the first 300 eigenvectors are the most significant and i process my image based on those. below is my coding. when i try to plot it i get only grey color screen. any thought on fixing it will be appreciated highly.
>> I=imread('abc.jpg');
>> I2 = im2double(I);
>> II=I2(:,:,1);
>> [coeff,score,latent] = pca(II);
>> Me=mean(II);
>> plot(0:2847,[0;cumsum(latent)/sum(latent)],'-ob');
>> plot(0:400,[0;cumsum(latent(1:400))/sum(latent)],'-ob');
>> C300=coeff(:,300);
>> S300=score(:,300);
>> Z300=C300*S300';
>> Z300=Z300';
>> MM=repmat(Me,2848,1);
>> Z300M=Z300+MM;
>> Z300mu=uint8(Z300M);
>> image(repmat(Z300mu,1,1,3))
댓글 수: 0
답변 (3개)
Image Analyst
2014년 12월 24일
What is the range of Z300mu and what is its data type? Try using imshow() with the [] option, instead of image().
댓글 수: 0
Chris Jademan
2015년 4월 3일
Hello Hydro, I have just applied the code you had given and there is an error.
Error in CompressImage (line 4) [coeff,score,latent] = pca(II);
What should I do to fix it ?
댓글 수: 1
Brendan Hamm
2015년 4월 6일
So the fact that you have an indexing:
II=I2(:,:,1);
implies that II is a m-by-n-by-1 array (3-dimensional array). The pca function expects a m-by-n matrix. You can achieve this with the squeeze function:
II = squeeze(I2(:,:,1));
which will remove the singleton dimension of your 3-d array, then the pca function should work.
댓글 수: 0
참고 항목
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!