You are on page 1of 7

TUGAS

MATA KULIAH ANALISA CITRA DAN VISI KOMPUTER


FINAL PROJECT

NAMA : ARDISTY PALVELUS JUMALA

NPM : 1634010066

SEMESTER : 04

PARAREL :A

PROGRAM STUDI TEKNIK INFORMATIKA


FAKULTAS ILMU KOMPUTER
UNIVERSITAS PEMBANGUNAN NASIONAL “VETERAN”
JAWA TIMUR
2018

SOURCE CODE MATCH FEATURES


>> currentfolder='F:\kuliah jummy\smt4\ACVK\kamar';%membuka folder
tempat menyimpan gambar yang akan digabungkan

>> kamarDir=fullfile(currentfolder);

>> kamarImg=imageSet(kamarDir);

>> montage(kamarImg.ImageLocation);

>> I=read(kamarImg,1);
>> I1=rgb2gray(I);
>> points=detectSURFFeatures(I1);
>> [features,points]=extractFeatures(I1,points);
>> numImg=numel(kamarImg.ImageLocation);
>> for n = 2:numImg

pointsPrevious = points;
featuresPrevious = features;

% membaca variable I
I = read(kamarImg, n);
% merubah gambar ke citra grayscale
I1 = rgb2gray(I);

% menyimpan ukuran gambar

imageSize(n,:) = size(I1);

% mendeteksi dan ekstrak gambar ke fitur SURF


points = detectSURFFeatures(I1);
[features, points] = extractFeatures(I1, points);

% mencari korespondensi antara I(n) dan I(n-1).


indexPairs = matchFeatures(features, featuresPrevious, 'Unique',
true);

matchedPoints = points(indexPairs(:,1), :);


matchedPointsPrev = pointsPrevious(indexPairs(:,2), :);

% perkiraan transformasi antara I(n) dan I(n-1).


tforms(n) = estimateGeometricTransform(matchedPoints,
matchedPointsPrev,...
'projective', 'Confidence', 99.9, 'MaxNumTrials', 2000);

% menghitung T(n) * T(n-1) * ... * T(1)


tforms(n).T = tforms(n).T * tforms(n-1).T;
end
>> % menghitung batas perubahan citra
for i = 1:numel(tforms)
[xlim(i,:), ylim(i,:)] = outputLimits(tforms(i), [1 imageSize(i,2)],
[1 imageSize(i,1)]);
end
>> avgXLim = mean(xlim, 2);
>> [~, idx] = sort(avgXLim);
>> centerIdx = floor((numel(tforms)+1)/2);
>> centerImageIdx = idx(centerIdx);
>> Tinv = invert(tforms(centerImageIdx));
>> for i = 1:numel(tforms)
tforms(i).T = tforms(i).T * Tinv.T;
end
>> for i = 1:numel(tforms)
[xlim(i,:), ylim(i,:)] = outputLimits(tforms(i), [1 imageSize(i,2)],
[1 imageSize(i,1)]);
end
>> maxImageSize = max(imageSize);
>> xMin = min([1; xlim(:)]);
>> xMax = max([maxImageSize(2); xlim(:)]);
>> yMin = min([1; ylim(:)]);
>> yMax = max([maxImageSize(1); ylim(:)]);
>> width = round(xMax - xMin);
>> height = round(yMax - yMin);
>> panorama = zeros([height width 3], 'like', I);
>> blender = vision.AlphaBlender('Operation', 'Binary mask', ...
'MaskSource', 'Input port');
>> xLimits = [xMin xMax];
>> yLimits = [yMin yMax];
>> panoramaView = imref2d([height width], xLimits, yLimits);
>> for i = 1:numImg

I = read(kamarImg, i);
% merubah I ke panorama
warpedImage = imwarp(I, tforms(i), 'OutputView', panoramaView);

% menghasilkan biner
mask = imwarp(true(size(I,1),size(I,2)), tforms(i), 'OutputView',
panoramaView);

% menyatukan kedua gambar menjadi panorama


panorama = step(blender, panorama, warpedImage, mask);
end
>> figure; imshow(panorama);

points = detectSURFFeatures(I1);
points = detectHarrisFeatures(I1,'FilterSize',5);

points = detectHarrisFeatures(I1,'MinQuality',0.01);
KESIMPULAN

Ketika akan menyatukan dua gambar, pertama membuka folder tempat menyimpan kedua
gambar yang akan dijadikan satu. Setelah itu kedua gambar dibandingkan dicari titik tengah
gambar tersebut. Jika titik tengah sudah ditemukan, maka akan di deteksi titik titik pada gambar
yang memiliki kesamaan fitur seperti warna atau lainnya. Ketika kedua gambar sudah
dibandingkan dan sudah ditemukan kesamaannya pada titik tertentu, baru lah digabung kan
kedua gambar tersebut sesuai dengan titik titik yang memiliki kesamaan.

saya menggunakan deteksi fitur Harris, dengan syntax:


>> detectHarrisFeatures(I1);
Detect fitur harris sendiri memiliki 3 pilihan tambahan yang tiap masing masing memiliki nama
dan juga default parameternya.

You might also like