Small Satellites

Home » 2014

Yearly Archives: 2014

Basic MATLAB

Using the break command to stop the while loop for given condition

t = 1;
while 1 % infinite loop
t = t+1;
    if (t > 1000 ) % condition
        break      % break the loop
    end
end

MATH Art

Math Formulas^2 + Creative Idea + square root (Randomness) – Time = Art !! Combining Art with Engineering, Science and Math. Check out more at Sevard.org

Art With Matlab

Vehicle detection, blob analysis

clc; clear all; close all;

% Read a grayscale or color image from the file
img = imread('car3.jpg');
% Display the grayscale image I
figure(1)
imshow(img)

Blob_01

Convert the grayscale image I to a binary image

bwi = im2bw(img, graythresh(img));
bwi =~bwi; % As bacground is light its better to inverse the image
figure(2)
imshow(bwi)

Blob_02

Remove from a binary image all connected components (objects) that have fewer than 100 pixels.do some adjsutements based on image

bwi = bwareaopen(bwi,100);
figure(3);
imshow(bwi);
% Create morphological structuring element, something which resemples the
% blob
str = strel('square',20);
bw = imdilate(bwi,str);

Blob_03

Trace region boundaries in binary image, As you see there might be some false detections.

[B,L] = bwboundaries(bw,'noholes');
figure(4);
imshow(img);
hold on
for i = 1:length(B)
      plot(B{i}(:,2), B{i}(:,1), 'r', 'LineWidth', 2.5)
end

Blob_04

World Magnetic Model,Matlab

 

close all;clear all;clc;
height = 500000; % A scalar value, in meters
lat = -90:2.5:90;  % geodetic latitude, in degrees, where north latitude is
%positive, and south latitude is negative
lon = -180:2.5:180;  % geodetic longitude, in degrees,
%where east longitude is positive,and west longitude is negative
% dyearA scalar decimal year. Decimal year is the desired year in
%a decimal format to include any fraction of the year that has already passed.
sla = size(lat);
sln = size(lon);
for i = 1:sla(2)
    for j =1:sln(2)
        [Bxyz, h, dec, dip, f] = ...
        wrldmagm(height, lat(i), lon(j), decyear(2014,1,22),'2010');
    % Note that WMM-2010 isvalid from January 1, 2010, until December 31,
    % 2014
    % Bxyz Magnetic field vector in nanotesla (nT)
    % h Horizontal intensity in nanotesla (nT)
    % dec Declination in degrees
    % dip Inclination in degrees
    % f Total intensity in nanotesla (nT)
        Bx(i,j) = Bxyz(1,1);
        By(i,j) = Bxyz(2,1);
        Bz(i,j) = Bxyz(3,1);
        Bm(i,j) = f;
%          [Bxyz(i,j), h(i,j), dec(i,j), dip(i,j), f(i,j)] = ...
%             wrldmagm(height, lat(i), lon(j), decyear(2014,1,22),'2010');
    end
end

Z component

xwidth = 640;
ywidth = 320;
colormap jet
hFig = figure(1);
contourf(lon,lat,Bz)
hold on
set(gcf,'PaperPositionMode','auto')
set(hFig, 'Position', [100 100 xwidth ywidth])
axis([-180 180 -90 90])
colorbar
load('topo.mat','topo','topomap1')
contour(0:179,-90:89,topo(:,1:180),[0 0],'.k')
contour(-180:-1,-90:89,topo(:,181:360),[0 0],'.k')
ylabel('Latitude [deg]')
xlabel('Longitude [deg]')
title('World Magnetic Model, Bz(nT) at Alt = 500 km')

MagneticField_01

Component X

hFig = figure(2);
contourf(lon,lat,Bx)
hold on
set(gcf,'PaperPositionMode','auto')
set(hFig, 'Position', [100 100 xwidth ywidth])
axis([-180 180 -90 90])
colorbar
load('topo.mat','topo','topomap1')
contour(0:179,-90:89,topo(:,1:180),[0 0],'.k')
contour(-180:-1,-90:89,topo(:,181:360),[0 0],'.k')
ylabel('Latitude [deg]')
xlabel('Longitude [deg]')
title('World Magnetic Model, Bx(nT) at Alt = 500 km')

MagneticField_02

Component Y

hFig = figure(3);
contourf(lon,lat,By)
hold on
set(gcf,'PaperPositionMode','auto')
set(hFig, 'Position', [100 100 xwidth ywidth])
axis([-180 180 -90 90])
colorbar
load('topo.mat','topo','topomap1')
contour(0:179,-90:89,topo(:,1:180),[0 0],'.k')
contour(-180:-1,-90:89,topo(:,181:360),[0 0],'.k')
ylabel('Latitude [deg]')
xlabel('Longitude [deg]')
title('World Magnetic Model, By(nT) at Alt = 500 km')

MagneticField_03

Total intensity in nanotesla (nT)

hFig = figure(4);
contourf(lon,lat,Bm)
hold on
set(gcf,'PaperPositionMode','auto')
set(hFig, 'Position', [100 100 xwidth ywidth])
axis([-180 180 -90 90])
colorbar
load('topo.mat','topo','topomap1')
contour(0:179,-90:89,topo(:,1:180),[0 0],'.k')
contour(-180:-1,-90:89,topo(:,181:360),[0 0],'.k')
ylabel('Latitude [deg]')
xlabel('Longitude [deg]')
title('World Magnetic Model, Total intensity(nT) at Alt = 500 km')

MagneticField_04

Distance Transform Path Planning Algorithm

clc;close all;clear all;

Input Map

RGB = imread('Mapn.png');
figure('Position',[600 0 600 1000],'color','k');
image(RGB);
hold on;
axis off
axis image
hold off;
% Convert to binary image matrix and inverse matrix values
I = rgb2gray(RGB);
binaryImage = im2bw(RGB, 0.3);
binaryImage = 1-binaryImage;
% Inital pose
xs = 540; ys = 750;
% Goal Pose
xg = 150; yg = 150;

dist_01

Distance to Goal

sz  = size(binaryImage);
for i = 1:sz(1)
    for j = 1:sz(2)
       rg(i,j) = sqrt((i-yg)^2 +(j - xg)^2);
      end
end
% Pose Matrix
pose = zeros(sz(1),sz(2));
pose(ys,xs) = 1;
pose(yg,xg) = 1;
Di = 15; % Distance of influence of the obstacles
% Compute for every pixel the distance to the nearest obstacle(non zero
% elements which after inversion corespondent to the obstacles)
[D,IDX] = bwdist(binaryImage);
for i = 1:sz(1)
    for j = 1:sz(2)
        rd = D(i,j);
        if (rd <= Di)
            rg(i,j)  = 1e6;
        end
    end
end

Distance Transform Path Planning Algorithm

figure('Position',[600 0 600 1000],'color','k');
hold on;
image(RGB);
colormap gray
contour(rg,15);
spy(pose,'*r');
axis off
axis image
title('Distance Transform Path Planning Algorithm','color','w');
x = xs; y = ys;
last = rg(y-1,x-1);
while (x ~= xg)||(y ~= yg)
    dis =[ rg(y-1,x-1), rg(y-1,x),rg(y-1,x+1);
        rg(y,x-1), rg(y,x) ,rg(y,x+1);
        rg(y+1,x-1), rg(y+1,x),rg(y+1,x+1)];
     m = min(dis(:));
     [r,c] = find(dis == m);
   rg(y,x) = 1E6;
   y = y-2+r;
   x = x-2+c;
   pose(y,x) = 1;
  end
spy(pose,'.r');
set(gcf, 'InvertHardCopy', 'off');
hold off;

dist_02

%d bloggers like this: