MATLAB Answers

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

208 ビュー (過去 30 日間)
G Prasanth Reddy
G Prasanth Reddy 2014 年 12 月 24 日
コメント済み: Image Analyst 2021 年 9 月 14 日 12:31
この 質問 は 1 人のコントリビューターによってフラグが設定されました
Dimensionality reduction
  3 件のコメント
Image Analyst
Image Analyst 2021 年 9 月 14 日 12:31
@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.
Also attached are some full demos.
  12 件のコメント


その他の回答 (7 件)

Devan Marçal
Devan Marçal 2015 年 8 月 13 日
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.
  8 件のコメント
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?
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 件のコメント
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 2018 年 3 月 24 日
How to visualize the result of PCA image in pseudocolor?
  1 件のコメント
Image Analyst
Image Analyst 2018 年 3 月 24 日
imshow(PC1); % Display the first principal component image.


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?

Community Treasure Hunt

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

Start Hunting!

Translated by