176 lines
5.1 KiB
Mathematica
176 lines
5.1 KiB
Mathematica
|
|
|
||
|
|
clear all
|
||
|
|
close all
|
||
|
|
|
||
|
|
color = 0;
|
||
|
|
% ----------------------------- get jpeg file paths --------------------
|
||
|
|
|
||
|
|
'getting image paths...'
|
||
|
|
|
||
|
|
if color ==0
|
||
|
|
path = ['../library_images/graffiti_256_black_white/'];
|
||
|
|
else
|
||
|
|
path = ['C:\Americano\library_images\graffiti_256_color\'];
|
||
|
|
end
|
||
|
|
|
||
|
|
|
||
|
|
% files = dir('C:\Image_registration\flickr_spider\graffiti_library\*.jpg'); % get file names
|
||
|
|
directories = dir(path); % get directory names
|
||
|
|
|
||
|
|
num_files = 0;
|
||
|
|
file_count = 0;
|
||
|
|
|
||
|
|
dir_temp = directories(3).name; % get first directory name
|
||
|
|
files = dir([path,dir_temp,'/*.jpg']); % get file names for first directory
|
||
|
|
file_count = length(files);
|
||
|
|
|
||
|
|
% add directory path to jpeg files name
|
||
|
|
for j=1:length(files)
|
||
|
|
files(j).name = [path,dir_temp,'/',files(j).name];
|
||
|
|
end
|
||
|
|
|
||
|
|
for i=2:(length(directories)-2) % offset by 2 because first two entries are '.' and '..'
|
||
|
|
|
||
|
|
|
||
|
|
dir_temp = directories(i+2).name; % get next directory name
|
||
|
|
|
||
|
|
files_temp = dir([path,dir_temp,'/*.jpg']); % get file names for given directory
|
||
|
|
|
||
|
|
% add directory path to jpeg files name
|
||
|
|
for j=1:length(files_temp)
|
||
|
|
files_temp(j).name = [path,dir_temp,'/',files_temp(j).name];
|
||
|
|
end
|
||
|
|
|
||
|
|
|
||
|
|
|
||
|
|
% concatenate file paths from next directory to existing
|
||
|
|
files((file_count+1):(file_count+length(files_temp))) = files_temp;
|
||
|
|
|
||
|
|
|
||
|
|
file_count = file_count+length(files_temp);
|
||
|
|
% pause
|
||
|
|
end
|
||
|
|
|
||
|
|
|
||
|
|
% bins = 16;
|
||
|
|
% hist_x = [(255/bins)/2:255/bins:(255-(255/bins)/2)];
|
||
|
|
% hist_matrix = zeros(length(files),bins);
|
||
|
|
|
||
|
|
radial_freq = 6;
|
||
|
|
angular_freq = 6;
|
||
|
|
vector_len = radial_freq*angular_freq;
|
||
|
|
gfd_matrix = zeros(length(files),vector_len);
|
||
|
|
% gfd_matrix = zeros(8000,vector_len);
|
||
|
|
|
||
|
|
size_v = [128 128];
|
||
|
|
|
||
|
|
avg_gfd = zeros(radial_freq,angular_freq);
|
||
|
|
|
||
|
|
for i=1:length(files)
|
||
|
|
|
||
|
|
i
|
||
|
|
|
||
|
|
|
||
|
|
Im_lib = imread([files(i).name]); % read in library image
|
||
|
|
|
||
|
|
Im_lib = imresize(Im_lib,size_v); % resize image to 128
|
||
|
|
|
||
|
|
% size_Im_lib = size(Im_lib);
|
||
|
|
%
|
||
|
|
% % ------ reshape Im_lib into 1D array ------
|
||
|
|
% Im_lib_array = reshape(Im_lib,size_Im_lib(1)*size_Im_lib(2),1);
|
||
|
|
%
|
||
|
|
% histo = hist(double(Im_lib_array),hist_x);
|
||
|
|
|
||
|
|
Im_lib_polar = polar_conversion(Im_lib);
|
||
|
|
Im_lib_polar_FFT = abs(fftshift(fft2(Im_lib_polar)));
|
||
|
|
|
||
|
|
DC = Im_lib_polar_FFT(size_v(1)/2+1,size_v(2)/2+1);
|
||
|
|
% energy_norm = sum(sum(Im_lib_polar_FFT));
|
||
|
|
|
||
|
|
% --------------- normalize coefs ------------------------
|
||
|
|
% Im_lib_polar_FFT(size_v(1)/2+1,size_v(2)/2+1) = Im_lib_polar_FFT(size_v(1)/2+1,size_v(2)/2+1)/(size_v(1)*size_v(2));
|
||
|
|
|
||
|
|
Im_lib_polar_FFT = Im_lib_polar_FFT./DC;
|
||
|
|
% Im_lib_polar_FFT = Im_lib_polar_FFT./energy_norm;
|
||
|
|
|
||
|
|
|
||
|
|
% Im_lib_polar_FFT(size_v(1)/2+1,size_v(2)/2+1) = DC;
|
||
|
|
|
||
|
|
|
||
|
|
|
||
|
|
center_gfd = [size_v(1)/2+1 size_v(2)/2+1];
|
||
|
|
|
||
|
|
gfd = Im_lib_polar_FFT(center_gfd(1):(center_gfd(1)+angular_freq-1),center_gfd(2):(center_gfd(2)+radial_freq-1));
|
||
|
|
|
||
|
|
avg_gfd = avg_gfd + gfd;
|
||
|
|
|
||
|
|
|
||
|
|
% figure(1),subplot(1,2,1),imshow(uint8(Im_lib))
|
||
|
|
% subplot(1,2,2),mesh(gfd)
|
||
|
|
%
|
||
|
|
% pause
|
||
|
|
|
||
|
|
% I1_gfd = fourier_mellin(Im_lib);
|
||
|
|
|
||
|
|
% hu_moment = humoments(Im_lib);
|
||
|
|
gfd_matrix(i,:) = gfd(:);
|
||
|
|
|
||
|
|
|
||
|
|
% figure(1),subplot(2,1,1),imshow(Im_lib)
|
||
|
|
% subplot(2,1,2),imshow(Im_lib)
|
||
|
|
% subplot(3,1,3),mesh(I1_fm)
|
||
|
|
|
||
|
|
|
||
|
|
% figure(1),subplot(1,2,1),imshow(Im_lib)
|
||
|
|
% subplot(1,2,2),mesh(I1_fm);
|
||
|
|
% pause
|
||
|
|
|
||
|
|
% subplot(1,2,1),imshow(Im_lib)
|
||
|
|
% subplot(1,2,2),plot(histo)
|
||
|
|
|
||
|
|
|
||
|
|
end
|
||
|
|
% pause
|
||
|
|
|
||
|
|
gfd_matrix = single(gfd_matrix);
|
||
|
|
save('gfd_matrix_graffiti_128', 'gfd_matrix')
|
||
|
|
% save('gfd_matrix_SF_128', 'gfd_matrix')
|
||
|
|
% save('avg_gfd_3045', 'avg_gfd')
|
||
|
|
|
||
|
|
% avg_gfd = gfd_matrix(1,:);
|
||
|
|
%
|
||
|
|
% for i=2:4846
|
||
|
|
% avg_gfd = avg_gfd+ gfd_matrix(i,:);
|
||
|
|
%
|
||
|
|
% end
|
||
|
|
|
||
|
|
|
||
|
|
|
||
|
|
|
||
|
|
% for i=1:1000%length(files)
|
||
|
|
% i
|
||
|
|
%
|
||
|
|
% fm = fm_matrix(i,:);
|
||
|
|
%
|
||
|
|
% % for j=1:1000
|
||
|
|
%
|
||
|
|
%
|
||
|
|
% [nearest_neighbor_fm neighbor_distances_fm] = kNearestNeighbors(fm_matrix(1:1000,:), fm, 1000);
|
||
|
|
% min_fm_dist = neighbor_distances_fm(2);
|
||
|
|
% max_fm_dist = neighbor_distances_fm(end);
|
||
|
|
%
|
||
|
|
% % end
|
||
|
|
%
|
||
|
|
% end
|
||
|
|
|
||
|
|
% fm_matrix = single(fm_matrix);
|
||
|
|
% save('gfd_matrix_graffiti_128', 'gfd_matrix')
|
||
|
|
% load('hist_matrix_graffiti');
|
||
|
|
|
||
|
|
|
||
|
|
% [index_vals,vector_vals,final_nodes] = kd_knn(tree,point,k,plot_stuff,node_number)
|
||
|
|
|
||
|
|
|
||
|
|
|