Kinematik, fizik biliminin ilgi alanı olan mekaniğin bir alt dalıdır. Hareketin uzay-zaman (konum) özellikleri ile ilgilenir. Harekete neden olan kütle ve kuvvet gibi özellikler kinematiğin ilgi alanı değildir. Kinematik konum, hız ve ivmelemeyi düzgün-doğrusal ve açısal olarak inceler. Kinematik Analiz hareketin oluşma nedenleri ile ilgilenmeksizin, hareketlerin konum ve zaman parametrelerinin incelenmesidir. matlab kullanılarak bir kameradan alınan görüntüden cismin konum - zaman, hız - zaman ve ivme - zaman grafiğini ortaya çıkaracağız. ilk başta kalibrasyon nedir neden yapılır sorusuna cevap verelim: Kalibrasyon tanımlanmış koşullar altında izlenebilirliği sağlanmış ölçüm cihazının ölçülen cihaz ile arasındaki ilişkiyi belirleyen işlemler dizisi olarak tanımlayabiliriz. Bir kameradan cismi incelemeden önce onun ayarlarını yapmak ve yerdeki konumu ayarlamak için kalibrasyon yapılır.
video sitesi kalibrasyon resmi ve gerçek dünyada hangi koordinatlarda olduğu bilgisi verilen kameranın kalibrasyonunu yapıp sonradan yukarıdan düşen topun konum - zaman, hız - zaman ve ivme - zaman grafiğini nasıl çizeceğimizi ele alacağız:
function P = calculate_conformal(I, S, method) %' Conformal Map Transformation '; %' Serdar Aritan 2009 BAG '; %' ---------------------------------- '; %' Image Coordinates of Calibration Points : I'; %' Space Coordinates of Calibration Points : S'; [rS, cS] = size(S); [rI, cI] = size(I); % check the matrix size if cS ~= cI || rS ~= rI error('matrix dimension'); end % Coefficients Matrix A =[I(:,1) -I(:,2) ones(rI,1) zeros(rI,1); I(:,2) I(:,1) zeros(rI,1) ones(rI,1)]; % There are two type of solutions for over determined systems of eq. % 1. Least Square Method [ \ ] % 2. Psedou Inverse [ pinv() ] if method == 1 P = A\S(:); %S = [S(:)]; % x(1), ... ,x(n) , y(1), ... , y(n) elseif method == 2 P = pinv(A)*S(:); else disp('missing method!!'); end end
function H = calculate_reconformal(P, I) %' Conformal Map Transformation '; %' Serdar Aritan 2009 BAG '; %' ---------------------------------- '; %' Image Coordinates of Data Points : I'; %' Conformal Coefficients : P'; [rI, cI] = size(I); % Coefficients Matrix A =[I(:,1) -I(:,2) ones(rI,1) zeros(rI,1); I(:,2) I(:,1) zeros(rI,1) ones(rI,1)]; H = A*P; H = [H(1:length(H)/2) H((length(H)/2)+1:end)]; end
function kalibrasyon_konum_belirleme() close all;clear; img_kalibrasyon = imread('calib_0001.jpg'); imshow(img_kalibrasyon); % kalibrasyon için sırasıyla belirtilen 8 noktayı seç I = ginput(8); % kalibrasyon noktalarının gerçek konum değerleri bir diziye atılmaktadır. S = [2.5 30 2.5 60 2.5 130 2.5 190 108 10 108 80 108 120 108 180]; % İki-Boyutlu Uyum Dönüşümü (2D Conformal Transformation) % Dört-parametreli benzerlik dönüşümü olarak da bilinir % Bu dönüşüm 3 basamaktan oluşmaktadır: uyum_donusumu = calculate_conformal(I, S, 1); % 1.Dönme : iki sistemin referans eksenlerini paralel yapmak için donme_acisi = atand(uyum_donusumu(2)/uyum_donusumu(1)); % 2.Ölçekleme : iki koordinat sisteminde denk boyut yaratmak için olceklendirme = uyum_donusumu(1)/cosd(donme_acisi); % 3.Öteleme: iki koordinat sisteminde ortak bir başlangıç noktası yaratmak için Tx = uyum_donusumu(3); Ty = uyum_donusumu(4); % yüklenecek resimleri matlab klasörün altından alıyoruz srcFiles = dir(strcat(pwd,'\Cap300_*.jpg')); hold off; for i = 1 : length(srcFiles) filename = strcat(pwd,'\',srcFiles(i).name); RGB=imread(filename); %resmi gri hale çevirme I = rgb2gray(RGB); % resmi gösterme ve değişikleri koruma imshow(I); % eşik değeri belirleme [level EM] = graythresh(I); % eşik değeri uygulama bw = im2bw(I, EM); % gereksiz görültüyü temizleme bw= medfilt2(bw,[3 3]); bw = bwareaopen(bw, 4); % cisimlerin daha iyi görünmesi için doldurma [B,L] = bwboundaries(bw,'noholes'); % Ağırlıklı kütle merkezini(WeightedCentroid), % cismin kütle merkezini(Centroid) % hesapanma cismin_merkezleri = regionprops(L, I, 'WeightedCentroid', 'Centroid'); % cismin kütle merkezini belirleme centroid = cismin_merkezleri.Centroid; ball_drop_centroid(i,1) = centroid(1); ball_drop_centroid(i,2) = centroid(2); % ağırlıklı kütle merkezini belirleme weightedCentroid = cismin_merkezleri.WeightedCentroid; ball_drop_weightedCentroid(i,1) = weightedCentroid(1); ball_drop_weightedCentroid(i,2) = weightedCentroid(2); end % kütle merkezi ve ağırlıklı kütle merkezi arasındaki farkı görebilmek % için büyütünüz. % kütle merkezine göre konum hesaplaması H_centroid = calculate_reconformal(uyum_donusumu, ball_drop_centroid); figure(1), plot(H_centroid(:,1),H_centroid(:,2), 'ro'); hold on; axis equal; grid on; % ağırlıklı kütle merkezine göre konum hesaplaması H_weightedCentroid = calculate_reconformal(uyum_donusumu, ball_drop_weightedCentroid); figure(1), plot(H_weightedCentroid(:,1),H_weightedCentroid(:,2), 'b+'); % Grafiğe başlık ekleyelim: xlabel('düşeyde aldığı yol (x)') ylabel('yatayda aldığı yol (y)') title('Topun Konum Grafiği') v_centroid_x(1) = 0; v_centroid_y(1) = 0; v_weightedCentroid_x(1) = 0; v_weightedCentroid_y(1) = 0; a_centroid_x(1) = 0; a_centroid_y(1) = 0; a_weightedCentroid_x(1) = 0; a_weightedCentroid_y(1) = 0; zaman(1) = 1; for i = 2 :length(H_centroid) zaman(i) = i; % hız hesaplanması v_centroid_x(i) = H_centroid(i,1) - H_centroid((i-1),1); v_centroid_y(i) = H_centroid(i,2) - H_centroid((i-1),2); v_weightedCentroid_x(i) = H_weightedCentroid(i,1) - H_weightedCentroid((i-1),1); v_weightedCentroid_y(i) = H_weightedCentroid(i,2) - H_weightedCentroid((i-1),2); % ivme hesaplanması a_centroid_x(i) = v_centroid_x(i) - v_centroid_x(i-1); a_centroid_y(i) = v_centroid_y(i) - v_centroid_y(i-1); a_weightedCentroid_x(i) = v_weightedCentroid_x(i) - v_weightedCentroid_x(i-1); a_weightedCentroid_y(i) = v_weightedCentroid_y(i) - v_weightedCentroid_y(i-1); end % kütle merkezine göre yatay hız hesaplaması figure(2), plot(zaman, v_centroid_x, 'ro'); hold on; axis equal; grid on; % ağırlıklı hız merkezine göre yatay hız hesaplaması figure(2), plot(zaman,v_weightedCentroid_x, 'b+'); % Grafiğe başlık ekleyelim: xlabel('x') ylabel('y') title('Topun yatayda hız Grafiği') % kütle merkezine göre düşey hız hesaplaması figure(3), plot(zaman, v_centroid_y, 'ro'); hold on; axis equal; grid on; % ağırlıklı hız merkezine göre düşey hız hesaplaması figure(3), plot(zaman,v_weightedCentroid_y, 'b+'); % Grafiğe başlık ekleyelim: xlabel('x') ylabel('y') title('Topun düşeyde hız Grafiği') % kütle merkezine göre yatay ivme hesaplaması figure(4), plot(zaman,a_centroid_x, 'ro'); hold on; axis equal; grid on; % ağırlıklı kütle merkezine göre yatay ivme hesaplaması figure(4), plot(zaman,a_weightedCentroid_x, 'b+'); % Grafiğe başlık ekleyelim: xlabel('x') ylabel('y') title('Topun yatayda ivme Grafiği') % kütle merkezine göre düşey ivme hesaplaması figure(5), plot(zaman,a_centroid_y, 'ro'); hold on; axis equal; grid on; % ağırlıklı kütle merkezine göre düşey ivme hesaplaması figure(5), plot(zaman,a_weightedCentroid_y, 'b+'); % Grafiğe başlık ekleyelim: xlabel('x') ylabel('y') title('Topun düşeyde ivme Grafiği') end
Kodu: kalibrasyon_ayarlama