how PCA can be applied to an image to reduce its dimensionality with example?

조회 수: 174 (최근 30일)
이 질문에 Walter Roberson 님이 플래그를 지정함
Dimensionality reduction
  댓글 수: 3
Image Analyst
Image Analyst 2021년 9월 14일
@SHEETAL AGRAWAL, perhaps. You obviously need at least two features. What would be your two features? Maybe gray level is one, but what is the other? Or do you just have two different features, like blob area and blob texture or brightness?

댓글을 달려면 로그인하십시오.

채택된 답변

Image Analyst
Image Analyst 2014년 12월 24일
편집: Image Analyst 2020년 4월 14일
Here's code I got from Spandan, one of the developers of the Image Processing Toolbox at the Mathworks:
Here some quick code for getting principal components of a color image. This code uses the pca() function from the Statistics Toolbox which makes the code simpler.
I = double(imread('peppers.png'));
X = reshape(I,size(I,1)*size(I,2),3);
coeff = pca(X);
Itransformed = X*coeff;
Ipc1 = reshape(Itransformed(:,1),size(I,1),size(I,2));
Ipc2 = reshape(Itransformed(:,2),size(I,1),size(I,2));
Ipc3 = reshape(Itransformed(:,3),size(I,1),size(I,2));
figure, imshow(Ipc1,[]);
figure, imshow(Ipc2,[]);
figure, imshow(Ipc3,[]);
In case you don’t want to use pca(), the same computation can be done without the use of pca() with a few more steps using base MATLAB functions.
Hope this helps.
-Spandan
Also attached are some full demos.
  댓글 수: 12
Ben Grassi
Ben Grassi 2020년 2월 13일
Thanks so much for the help, getframe() gave me exactly what I needed.

댓글을 달려면 로그인하십시오.

추가 답변 (7개)

Devan Marçal
Devan Marçal 2015년 8월 13일
Hi,
in your example you used PCA in just one image. I have an image bank a total of ~ 800 images. If I make a loop (if, while, etc ..) using the PCA function for each image individually, will be using this command wrong or inefficiently?
Thanks a lot.
Devan
  댓글 수: 8
Darshan Jain
Darshan Jain 2019년 7월 25일
Hey @ImageAnalyst,
I checked out your script, I had a small question, How could I plot the colored image back in three plots (showing approximation by pca1, then pca1 and pca2 and then followed by pca1, pca2 and pca3).
I tried doing using the imfuse comand "imfuse(pca1,pca2)", the clarity improved well, but i'm not able to reproduce the same colors. (see the attached image)
I think this is because I need to normalize the data, and then un-normalize it back before plotting. (I'm not sure though)
Image Analyst
Image Analyst 2019년 7월 25일
Etworld, I just ran the colored chips image and it ran fine. Did you change my code at all?
00_Screenshot.png
Darshan: where did your colors come from? I don't understand what your "approximations" are supposed to be. But anyway, you can stitch images side by side if they are all RGB images to begin with:
wideImage = [rgbImage1, rgbImage2, rgbImage3];

댓글을 달려면 로그인하십시오.


Shaveta Arora
Shaveta Arora 2016년 1월 30일
Can I have the pca code used in this color image example
  댓글 수: 6
Shaveta Arora
Shaveta Arora 2016년 1월 31일
Might possible. Pls share this pca function to save in my folder.
Image Analyst
Image Analyst 2016년 1월 31일
I can't. It would not be legal. You either have to buy the toolbox from the Mathworks, or implement it yourself from low level code.

댓글을 달려면 로그인하십시오.


Anitha Anbazhagan
Anitha Anbazhagan 2016년 9월 17일
I have 200 ROIs from each of the 50 images. For each ROI, I have 96 feature vectors for four different frequency bands. It seems very high dimensional. How to apply PCA for this? PCA should be applied to data matrix. Do I have to apply for each image or each ROI?
  댓글 수: 1
Image Analyst
Image Analyst 2016년 9월 17일
It depends on if you want PCA components on each image individually, or the PCA components of the group as a whole.

댓글을 달려면 로그인하십시오.


Mina Kh
Mina Kh 2016년 12월 11일
Hi. I have multispectral( multi channel) data and I want to apply PCA to reduce the number of channel. Can u give me some hint?Which code i have to use?

Arathy Das
Arathy Das 2016년 12월 20일
How can i extract three texture features among the 22 using PCA?
  댓글 수: 1
Image Analyst
Image Analyst 2016년 12월 20일
I think you should start your own discussion with your own data or images. If you have 22 PCA columns, then just extract the 3 you want as usual.
pca3 = pca22(:, 1:3); % or whatever.

댓글을 달려면 로그인하십시오.


joynjo
joynjo 2018년 3월 24일
How to visualize the result of PCA image in pseudocolor?

F M Anim Hossain
F M Anim Hossain 2018년 4월 6일
I'm new to the concept of PCA. I'm trying to develop something that can recognize color features from different images. Is it possible to do it with the help of PCA?

카테고리

Help CenterFile Exchange에서 Dimensionality Reduction and Feature Extraction에 대해 자세히 알아보기

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by