Példa egy Matlab programra
function img_color = szegmentalas_pelda()
% ---------------- kép beolvasása -------------------%
%img = imread('pecs1.jpg');
%img = imread('ilonka.jpg');
%img = imread('vaza.jpg');
img = imread('shore.jpg');
%img = imread('haz_auto.jpg');
img_gray = rgb2gray(img); %% szürkeárnyalatossá konvertálás
imshow(img_gray); %% szürkeárnyalatos kép megjelenítése
imhist(img_gray); %% hisztogram megjelenítése
[count, x] = imhist(img_gray); %% hisztogram
count2 = count; %% hisztogram értékek másolása
% ------------- hisztogram simítása -------------- %
count2(:) = count(:);
for i = 11:245;
count2(i) = sum(count(i-10:i+10)) / 21;
end
% ------------- lokális minimum keresése -----------%
local_mini = 1:length(count);
local_mini(:) = 0;
for i= 10:250;
if ( count2(i-1) > count2(i) && count2(i) < count2(i+1) )
local_mini(i) = 1;
end;
end
% simított hisztogram kirajzolása
plot(x, count, 'r-', x,count2, 'b-');
% ----- tartományok címkézése a lokális mimumhelyek között -----%
local_mins = find(local_mini>0);
labels =uint8(1:256);
for j=1:length(local_mins );
if (j == 1)
labels(1:local_mins (j)) = 1;
else
labels(local_mins (j-1):local_mins (j)) = j;
end;
end;
labels(local_mins(length(local_mins))+1:256) = labels(local_mins(length(local_mins)))+1;
% ---- szürkeárnyalatos kép címkézése a hisztogramtartományok alapján ------ %
img_label = img_gray;
dims = size(img_gray);
x = 1:dims(1);
y = 1:dims(2);
for i = 1:dims(1);
for j = 1:dims(2);
img_label(i,j) = labels(img_gray(i,j)+1);
end;
end;
img_color = label2rgb(img_label, 'jet'); %% álszínezés
figure; %% eredmény megjelenítése
subplot(1,2,1); imshow(img_gray);
subplot(1,2,2); imshow(img_color);
end
A program eredménye egy példa képen: