-
Notifications
You must be signed in to change notification settings - Fork 0
/
spatialAverage.m
47 lines (39 loc) Β· 1.32 KB
/
spatialAverage.m
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
% Spatial avaergae of pixels in neighbourhood
clc;
clear;
img = imread('lenna-220px.png');
subplot(1, 2, 1); imshow(img);
newImg = spatialAvg(img, 7);
subplot(1, 2, 2); imshow(newImg);
function [img, average] = spatialAvg(image, pixels)
[m, n, ~] = size(image);
img = image;
maskSize = (pixels - 1) / 2;
if maskSize == 0
return;
end
% Bulk matrix
for row = maskSize + 1: (m - maskSize)
for column = 1 + maskSize : (n - maskSize)
spatialImg = image(row - maskSize : row + maskSize, column - maskSize : column + maskSize, :);
average = mean(mean(spatialImg));
img(row, column, :) = average;
end
end
% first row
for column = 1 + maskSize : n - maskSize
img(1, column, :) = mean(mean(img(1:1 + maskSize, column : column + maskSize, :)));
end
% last row
for column = 1 + maskSize : n - maskSize
img(m, column, :) = mean(mean(image(m - maskSize:m, column : column + maskSize, :)));
end
% first column
for row = 1 + maskSize : m - maskSize
img(row, 1, :) = mean(mean(image(row - maskSize : row + maskSize, 1 : 1 + maskSize, :)));
end
% last column
for row = 1 + maskSize : m - maskSize
img(row, column, :) = mean(mean(image(row - maskSize : row + maskSize, n - maskSize : n, :)));
end
end