Sabtu, 11 Oktober 2014

Mengenal function imfilter dan conv2 di matlab



Ada suatu pertanyaan dari kawan yaitu mengenai cara membuat filter gaussian dan mengimplementasikan kedalam suatu citra
Yaitu ada 2 cara 


menggunakan function imfilter atau conv2


clc;clear all;close all;
%% www.softscients.web.id
I = imread('D:/bird.bmp');
%% menggunakan function buil-in yaitu fspecial
myfilter = fspecial('gaussian',[5 5],2); %%membuat filter 
%% menggunakan function imfilter
Ig(:,:,1) = imfilter(double(I(:,:,1)),myfilter,'same');
Ig(:,:,2) = imfilter(double(I(:,:,2)),myfilter,'same');
Ig(:,:,3) = imfilter(double(I(:,:,3)),myfilter,'same');
figure,imshow(uint8(Ig)),title('imfilter -- www.softscients.web.id');
 
%% menggunakan function yang dibuat sendiri yaitu gaussian2d
myfilter2 = gaussian2d(5,2); %%membuat filter
%% menggunakan teknik convolution yaitu function conv2
Ig2(:,:,1) = conv2(double(I(:,:,1)),myfilter2,'same');
Ig2(:,:,2) = conv2(double(I(:,:,2)),myfilter2,'same');
Ig2(:,:,3) = conv2(double(I(:,:,3)),myfilter2,'same');
figure,imshow(uint8(Ig2)),title('convolution -- www.softscients.web.id');     



Jika kita ingin membuat filter gaussian bisa menggunakan berikut

function f=gaussian2d(N,sigma)
%% http://stackoverflow.com/questions/13193248/how-to-make-a-gaussian-filter-in-matlab
N = N - 1;
[x y] = meshgrid(round(-N/2):round(N/2), round(-N/2):round(N/2));
f = exp(-x.^2/(2*sigma^2)-y.^2/(2*sigma^2));
f = f./sum(f(:));       

citra asli


citra yang diberi filter gaussian - blur




Pada dasarnya function imfilter bekerja dengan teknik convolution

Posting Komentar