PCA/ICA on grayscale image

22 Ansichten (letzte 30 Tage)
Stephen Porter
Stephen Porter am 16 Nov. 2021
Beantwortet: yanqi liu am 19 Nov. 2021
I have read some posts on here discussing how PCA can be applied to color images to separate features. I have also seen some comments asking why these techniques would even be applied to grayscale images in the first place. To answer that question for anyone willing to help me, I have the background and I have different levels of grayscale intensity. The images I am trying this technique on are from an electron microscope and cannot be taken in color. Without trying to be too technical on the physical science, the levels of intensity within the grayscale image come from different types of atoms from the object being imaged. In my case, I have Ce atoms and Pt atoms so there will be different levels of intensity coming from each element.
I have attached my attempt here. This code does extract some components, but I am not sure if they are even the correct ones. I also cannot plot these components in an image to see how well I separated each component. Any help in separating the different components would be greatly appreciated.
clear all
image = imread('HAADF _ ATT 1_12MX_200kV_3211.jpg');
image = double(image);
image_reshape = reshape(image, size(image,1)*size(image,2),3);
figure(1)
subplot(2,2,1)
imshow(image)
subplot(2,2,2)
imhist(image)
subplot(2,2,3)
imshow(image_reshape)
subplot(2,2,4)
imhist(image_reshape)
q = 2;
[coeff,Data_PCA,latent,tsquared,explained,mu] = pca(image_reshape);
md1 = rica(Data_PCA, q);
Data_ICA = transform(md1, Data_PCA);
Data_no_noise = Data_ICA(:,1);
plotsPerCol = 2;
figure(2)
for i = 1:q
subplot(plotsPerCol, ceil(q/plotsPerCol), i)
plot(Data_ICA(:,i).^2)
title(strcat("Component ", string(i), " Squared"))
end
figure(3)
PCA1 = Data_PCA(:,1).^2;
PCA2 = Data_PCA(:,2).^2;
PCA3 = Data_PCA(:,3).^2;
imshow(PCA1)

Akzeptierte Antwort

yanqi liu
yanqi liu am 19 Nov. 2021
clc;clear all;close all;
image = imread('football.jpg');
image = double(image);
image_reshape = reshape(image, size(image,1)*size(image,2),3);
figure(1)
subplot(2,2,1)
imshow(mat2gray(image))
subplot(2,2,2)
imhist(mat2gray(image))
subplot(2,2,3)
plot3(image_reshape(:,1), image_reshape(:,2), image_reshape(:,3), 'r.')
subplot(2,2,4)
imhist(mat2gray(image_reshape))
q = 2;
[coeff,Data_PCA,latent,tsquared,explained,mu] = pca(image_reshape);
md1 = rica(Data_PCA, q);
Data_ICA = transform(md1, Data_PCA);
Data_no_noise = Data_ICA(:,1);
plotsPerCol = 2;
figure(2)
for i = 1:q
subplot(plotsPerCol, ceil(q/plotsPerCol), i)
plot(Data_ICA(:,i).^2)
title(strcat("Component ", string(i), " Squared"))
end
figure(3)
PCA1 = Data_PCA(:,1).^2;
PCA2 = Data_PCA(:,2).^2;
PCA3 = Data_PCA(:,3).^2;
plot3(PCA1, PCA2, PCA3, 'r.')

Weitere Antworten (0)

Kategorien

Mehr zu Dimensionality Reduction and Feature Extraction finden Sie in Help Center und File Exchange

Produkte


Version

R2020b

Community Treasure Hunt

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

Start Hunting!

Translated by