function I = gaussianBlur(image,sigma) k = gaussianKernel(sigma); blurSize = floor(length(k)/2); imageSize= size(image); %deal with the stupid boundary condition %duplicate top and bottom edges image = cat (1, repmat(image(1,:),[blurSize,1]),... image,... repmat(image(imageSize(1),:),[blurSize,1])); %duplicate left and right edges image = cat (2, repmat(image(:,1),[1,blurSize]),... image,... repmat(image(:,imageSize(2)),[1,blurSize])); I = conv2(conv2(image,k,'valid'),k','valid'); %size(I); imagesc(I); axis image;