This project will give you the opportunity to create your own unsupervised algorithm and investigate where these solutions converge.
You will use your own dataset of images, either found on the network (and you should reference and give credit for it), or your own set of images. You will need at least 100 images to get sufficient statistics for this case. These images should be 1Mpixel or larger.
Write a PCA (Sanger) or ICA (Bell) based algorithm that can take an arbitrary input vector of at least 256 inputs. You might want to test the code with a similar approach used in the first project where one has cosine waves of the same frequency but with different phases as a way to create the relevant statistics of a co-variance matrix.
Taking your image datasets, you want to look at the first level of receptive fields for your inage image. For two different receptive field sizes (e.g. 9x9 and 15x15), you should
Look at the output of the image(s) you would get if you passed your image(s) through this particular weighting structure. Assume the output is a linear function (no nonlinearity at this stage). Plot some of the interesting images.
From your new output images, subsample these results taking the maximum value for your subimage. You will get a much smaller sized pixel number for your set of images. a 1000x1000 image with a 9x9block becomes roughly 111x111 size image. From this image, repeat the experiment again using this image stream for a single receptive field size (e.g. 5x5). Look at the resulting output weight images and comment on what is noticed, including referenced to the original image.