вот способ использования fft
в 1D по х и у проекция:
Во-первых, я размыть изображение немного, чтобы сгладить высокий FREQ шум путем свертки с гауссовым:
m=double(imread('print5.jpg'));
m=abs(m-max(m(:))); % optional line if you want to look on the black square as "signal"
H=fspecial('gaussian',7,1);
m2=conv2(m,H,'same');
тогда я взять сл т проекции каждой оси:
delta=1;
N=size(m,1);
df=1/(N*delta); % the frequency resolution (df=1/max_T)
f_vector= df*((1:N)-1-N/2); % frequency vector
freq_vec=f_vector;
fft_vecx=fftshift(fft(sum(m2)));
fft_vecy=fftshift(fft(sum(m2')));
plot(freq_vec,abs(fft_vecx),freq_vec,abs(fft_vecy))
Таким образом, мы можем видеть обе оси дают пик при котором 0.07422 перевести на период 1/0,07422 пикселей или ~ 13.5 пикселей.
Лучший способ получить также информацию угла идти 2D, то есть:
ml= log(abs(fftshift (fft2(m2)))+1);
imagesc(ml)
colormap(bone)
, а затем применить инструменты, такие как простая геометрия или regionprops, если вы хотите, вы можете получить угол и размер квадратов. Размер квадрата равен 1/размер большого поворотного квадрата на фоне (бит нечеткий, потому что я размыл изображение, поэтому попробуйте сделать это без этого), а угол - atan(y/x)
. Расстояние между квадратами составляет 1/расстояние между сильными пиками в центральной части до центра изображения.
так что если вы пороговая ml
образ правильно сказать
imagesc(ml>11)
вы можете получить доступ к пики центр для этого ...
еще один подход будет морфологическая операция на бинарном изображении, например, Я порою размытое изображение и сжимаю объекты до точек. Она удаляет пиксели так, чтобы объекты без отверстий сжиматься до точки:
BW=m2>100;
BW2 = bwmorph(BW,'shrink',Inf);
figure, imshow(BW2)
Тогда вы практически есть один пиксель за решетку сайта решетки! так что вы можете кормить его решение Amro в с помощью преобразования поджилки, или анализировать ее с FFT, или установить блок, и т.д. ...
Try Лоо king ad частотный контент: 'fft2' сетка очень регулярная, вы должны иметь возможность определять пики в частотной области. – Shai
Если вы отредактируете всю информацию из приведенных выше комментариев в свой вопрос, вы сможете восстановить ее. –
wow, это привлекло много downvotes в короткий промежуток времени. Я понимаю, почему он был закрыт, но действительно ли он заслужил -20 downvotes ... – Amro