WOLFRAM NOTEBOOK

1.2 Independent Component Analysis

1.2.1 Independent Component

In[]:=
RandomSeed[1234];
In[]:=
R=RandomReal[{0,1},{6,5}];MatrixForm[R]
Out[]//MatrixForm=
0.12198
0.251686
0.00387693
0.313961
0.253868
0.0630238
0.692883
0.929455
0.414883
0.162758
0.035237
0.640301
0.301484
0.680089
0.241013
0.0233121
0.020026
0.388972
0.0902071
0.358214
0.0238752
0.401074
0.530013
0.0844171
0.44979
0.879087
0.353743
0.290261
0.191914
0.501521
In[]:=
Import["https://raw.githubusercontent.com/antononcube/MathematicaForPrediction/master/IndependentComponentAnalysis.m"]
In[]:=
k=4;
In[]:=
{S,A}=IndependentComponentAnalysis[Transpose[R],k,PrecisionGoal12];
In[]:=
Norm[R-Transpose[S.A]]/Norm[R]
Out[]=
0.665229
In[]:=
Transpose[S.A]//MatrixForm
Out[]//MatrixForm=
-0.0237292
0.105977
-0.141832
0.168251
0.108159
-0.060884
0.568975
0.805547
0.290975
0.0388507
-0.188396
0.416669
0.0778518
0.456456
0.0173802
-0.309754
-0.31304
0.0559067
-0.242859
0.0251487
0.172443
0.549642
0.678581
0.232985
0.598358
0.54574
0.0203958
-0.0430865
-0.141433
0.168173
In[]:=
k=5;
In[]:=
{S,A}=IndependentComponentAnalysis[Transpose[R],k,PrecisionGoal12];
In[]:=
Norm[R-Transpose[S.A]]/Norm[R]
Out[]=
0.54409
In[]:=
k=6;
In[]:=
{S,A}=IndependentComponentAnalysis[Transpose[R],k,PrecisionGoal12];
In[]:=
Norm[R-Transpose[S.A]]/Norm[R]
Out[]=
4.90395×
-16
10

1.2.2 Image Compression via ICA

In[]:=
image=
;
In[]:=
imgR=ColorConvert[image,"Grayscale"]
Out[]=
In[]:=
R=ImageData[imgR];
In[]:=
Dimensions[R]
Out[]=
{313,310}
In[]:=
{S,A}=IndependentComponentAnalysis[Transpose[R],20,PrecisionGoal15];
In[]:=
Norm[R-Transpose[S.A]]/Norm[R]
Out[]=
0.253017
In[]:=
Dimensions[S]
Out[]=
{310,20}
In[]:=
Dimensions[A]
Out[]=
{20,313}
In[]:=
imdata=Transpose[S.A];
In[]:=
Image[imdata]
Out[]=
In[]:=
{S,A}=IndependentComponentAnalysis[Transpose[R],50,PrecisionGoal15];
In[]:=
Norm[R-Transpose[S.A]]/Norm[R]
Out[]=
0.164225
In[]:=
Dimensions[S]
Out[]=
{310,50}
In[]:=
Dimensions[A]
Out[]=
{50,313}
In[]:=
imdata=Transpose[S.A];
In[]:=
imgC=Image[imdata]
Out[]=
In[]:=
GaussianFilter[imgC,1.]//ImageAdjust
Out[]=

1.2.3 Image Compression via ICA in Python

In[]:=
lena=
;
In[]:=
ImageQ[lena]
Out[]=
True
In[]:=
Export["D:\\lena.png",lena];
In[]:=
session=StartExternalSession["Python"]
Out[]=
ExternalSessionObject
System: Python
EvaluationCount:
None
UUID: 5ffecb65-d89e-4d91-890f-d032d6d72dec
Test
In[]:=
5+6
The code developed by Treadway A. (2018),
In[]:=
# load packages
from sklearn.decomposition import FastICA
from pylab import *
from skimage import data, io, color
Let us employ k = 50,
In[]:=
ica = FastICA(n_components = 50)
In[]:=
emc2_image = io.imread("D:\\lena.png", as_grey = True)
ica.fit(emc2_image)
In[]:=
emc2_image_ica = ica.fit_transform(emc2_image)
emc2_restored = ica.inverse_transform(emc2_image_ica)
In[]:=
io.imshow(emc2_restored)
show()
Wolfram Cloud

You are using a browser not supported by the Wolfram Cloud

Supported browsers include recent versions of Chrome, Edge, Firefox and Safari.


I understand and wish to continue anyway »

You are using a browser not supported by the Wolfram Cloud. Supported browsers include recent versions of Chrome, Edge, Firefox and Safari.