library(biOps)
files <- (Sys.glob("Dropbox/Semester6/ai_cs365/hw2/jpg/*.jpg"))
z<-list()
y=""
output<-matrix(,,)
for (i in c(1:length(files))){
  y<-readJpeg(files[1])
  x<-readJpeg(files[i])
  
  x<-imgGreenBand(x)
  
  x<-as.vector(t(x))
  z[[i]]<-x
  
}
output = do.call(cbind,z)
output_inv = t(output)

library(graphics)
library(RDRToolbox)
library(rgl)
library(isopam)
library(yaImpute)
library(FNN)
library(class)
library(ggplot2)

dis=dist(output_inv)
a=as.matrix(dis)

#a=output_inv[20,]

n = nrow(a)
knn.mat = matrix(0, ncol = 6, nrow = n)  #5 nearest neighbours calculated
knd.mat = knn.mat
for(i in 1:n){
  knn.mat[i,] = order(a[i,])[1:6]
  knd.mat[i,] = a[i,knn.mat[i,]]
}

#plots 




rv2=Isomap(data=output_inv, dims=1:10, k=2, plotResiduals=TRUE)
rv3=Isomap(data=output_inv, dims=1:10, k=3, plotResiduals=TRUE)
rv5=Isomap(data=output_inv, dims=1:10, k=5, plotResiduals=TRUE)
rv8=Isomap(data=output_inv, dims=1:10, k=8, plotResiduals=TRUE)
rv10=Isomap(data=output_inv, dims=1:10, k=10, plotResiduals=TRUE)

ans1=Isomap(data=output_inv, dims=2, k=10, plotResiduals=TRUE)
ans2=Isomap(data=output_inv, dims=2, k=2, plotResiduals=TRUE)
ans5=Isomap(data=output_inv, dims=2, k=5, plotResiduals=TRUE)
tree<-spantree(dis)
pl<-ordiplot(cmdscale(dis), main="cmdscale")
lines(tree,pl,col="red")
pl<plot(ans5$dim2, xlab="",ylab="",main="2D-manifold,dim=2",ylim=c(5000,-20000))
lines(tree,pl,col="red")

for(i in knn.mat[20,])
{
  points(ans5$dim2[i,1],ans5$dim2[i,2],pch=19)
  text(ans5$dim2[i,1],ans5$dim2[i,2],i, pos=1)
}



d <- data.frame(x = ans5$dim2[,1], y = ans5$dim2[,2],names = c(1:143))
ggplot(d, aes(x,y)) + geom_point() + geom_text(aes(label=names),hjust=0,vjust=0)  #all

ggplot(d, aes(x,y),pos=1) + geom_point() + geom_text(aes(label=names),hjust=0,vjust=0)+ylim(-63000,-55000) #image 10
ggplot(d, aes(x,y),pos=1) + geom_point() + geom_text(aes(label=names),hjust=0,vjust=0)+ylim(5000,-20000) #near image 20

pl<plot(ans5$dim2, xlab="",ylab="",main="2D-manifold,dim=2,image=25",ylim=c(5000,-20000))
lines(tree,pl,col="red")

for(i in knn.mat[20,])
{
  points(ans5$dim2[i,1],ans5$dim2[i,2],pch=19)
  text(ans5$dim2[i,1],ans5$dim2[i,2],i, pos=1)
}


pl<plot(ans5$dim2, xlab="",ylab="",main="2D-manifold,dim=2,image=10",ylim=c(-63000,-55000))
lines(tree,pl,col="red")

for(i in knn.mat[5,])
{
  points(ans5$dim2[i,1],ans5$dim2[i,2],pch=19)
  text(ans5$dim2[i,1],ans5$dim2[i,2],i, pos=2)
}

ans10=knn.mat[5,] #5 4 6 7 3    #[1] "Dropbox/Semester6/ai_cs365/hw2/jpg/scene00010.jpg"
#> files[4]
#[1] "Dropbox/Semester6/ai_cs365/hw2/jpg/scene00009.jpg"
#> files[6]
#[1] "Dropbox/Semester6/ai_cs365/hw2/jpg/scene00011.jpg"
#> files[7]
#[1] "Dropbox/Semester6/ai_cs365/hw2/jpg/scene00012.jpg"
#> files[3]
#[1] "Dropbox/Semester6/ai_cs365/hw2/jpg/scene00008.jpg"

ans25=knn.mat[20,] #20 21 19 22 18
#> files[20]
#[1] "Dropbox/Semester6/ai_cs365/hw2/jpg/scene00025.jpg"
#> files[21]
#[1] "Dropbox/Semester6/ai_cs365/hw2/jpg/scene00026.jpg"
#> files[19]
#[1] "Dropbox/Semester6/ai_cs365/hw2/jpg/scene00024.jpg"
#> files[22]
#[1] "Dropbox/Semester6/ai_cs365/hw2/jpg/scene00027.jpg"
#> files[18]
#[1] "Dropbox/Semester6/ai_cs365/hw2/jpg/scene00023.jpg"

