Pri segmentácii farebného obrazu pomocou prahovania môžeme prahovanie aplikovať zvlášť na každý farebný kanál. Prípadne môžeme obraz transformovať do iného farebného priestoru a prahovanie vykonať tam. Keďže prahovanie je nelineárna operácia, výsledky budú odlišné. Je treba vhodne zvoliť farebný priestor aby sme od seba vedeli oddeliť jednotlivé triedy. Pri prahovaní farebných obrázkov po zložkách si môžeme oblasť vymedzenú prahmi pre objekt v popredí ako kváder.  Zmenami prahov môžeme hýbať polohami jeho stien. Pri manuálnych metódach hýbeme prahmi manuálne pri (semi)automatických hýbeme (semi)automaticky. 

K-means klastrovanie je reprezentatnom metód, kde hranice medzi triedami môžu byť komplikovanejšie.  V prípade K-means hľadáme v \(N\) rozmernom priestore \(K\) oblastí (klastrov) bodov, ktoré sú kompaktné a určené svojim priemerom a svojimi bodmi, t.j. oblasti môžu mať v podstate takmer ľubovoľný tvar.  Taktiež sa samozrejme môžu použiť rôzne farebné priestory. Algoritmus je iteratívny a má nasledovné kroky:

  1. Zvolíme \(K\) počiatočných priemerných hodnôt (jadrá klastrov)
  2. Každej z priemerných hodnôt priradíme body ktoré sú k nej najbližšie (môžeme si zvoliť metriku)
  3. Prepočítame priemerné hodnoty klastrov
  4. Opakujeme od bodu 2 pokiaľ sú zmeny priemerov nad zvolenú hodnotu

Príklad použitia k-means klastrovania na segmentáciu obrazu na 10 tried je na Obr. 1. Obraz je prahovaný v prostredí MATLAB pomocou funkcie imsegkmeans, ktorá vracia 10 výsledných centroidov v trojrozmernom priestore a informáciu (label) pre každý bod obrazu, do ktorej triedy patrí. Na základe toho môžeme napr. zobraziť príslušné triedy pomocou pseudofarieb pomocou funkcie labeloverlay, či vytvoriť výstup odpovedajúci nelineárnej kvantizácii pôvodného obrazu pomocou funkcie label2rgb.


Obr. 1 Príklad segmentácie pomocou funkcie K-means klastrovania pri K=10, vpravo originálny obrázok, v strede zobrazených 10 výsledných klastrov, vpravo príklad využitia klastrov a ich centroidov na kvantizáciu obrazu

Referencie

[1] Gonzalez, R., C., Woods, E., W., Digital Image Processing, Global Edition, 4th edition, Pearson  2018, ISBN 10: 1-292-22304-9

Prílohy

Zdrojový kód programu, ktorý vytvoril Obr. 1

clear all; close all; clc;
clnum=10;
fig=figure;
subplot(1,3,1)
I = imread("peppers.png");
imshow(I)
title("Original Image")

subplot(1,3,2)
[L,Centers] = imsegkmeans(I,clnum);
B = labeloverlay(I,L);
imshow(B)
title("Labeled Image, 10 clases")

subplot(1,3,3)
[L,Centers] = imsegkmeans(I,clnum);
J = label2rgb(L,im2double(Centers));
imshow(J)
title("Quantized Image, 10 colors")
fig.PaperUnits = 'inches';
fig.PaperPosition = [0 0 10 6];
print(fig,"segmColorKmeans.png",'-dpng');



PDF verzia tejto stránky je dostupná tu: segmentation_color_kmeans_sk.pdf