Trénink klasifikátoru

Upravený snímek (případně originál, který úpravu nevyžadoval) vstupuje do tréninku klasifikátoru. Zvolíme plugin TWS (Plugins>Segmentation>Trainable Weka Segmentation) – snímek se otevře znovu v klasifikátoru. Pak nastupuje ruční  označování struktur značkami (traces) a jejich přiřazování do tříd, trénink klasifikátoru a další úprava značek, přidání dalších tříd, dokud výsledná segmentace neodpovídá strukturám, které hodnotíme. Výsledný klasifikátor uložíme spolu s datovým souborem, který obsahuje informace o klasifikaci pixelů (ve formě vektorů), náležejících jednotlivým značkám. Výsledkem "práce" klasifikátoru je barevný segmentovaný obraz (Classified image) a pravděpodobnostní mapy (Probability maps) jednotlivých tříd, do kterých jsme přiřadili značky pro jednotlivé struktury. Segmentovaný obraz je výsledkem mnoha matematických operací, které probíhají na pozadí při tréninku klasifikátoru nebo při generování výsledků. Doba, po kterou tyto operace probíhají, závisí na vlastnostech počítače. Postup jsme po jednotlivých krocích popsali v následujících lekcích.

 

Několik úvodních kroků spuštění klasifikátoru je v přiloženém makru.

// Makro pro spuštění tréninku klasifikátoru Weka.
// Viz https://imagej.net/Trainable_Weka_Segmentation#Complete_macro_example:
// Uživatel vybere soubor, pravděpodobně s příponou TIF.

path = File.openDialog("Select a TIF File");
delay = 1000;
twsWindowName = "Trainable Weka Segmentation v3.2.34";
// Pokud nechcete pomocné texty, nastavte "false":
showMessages = true;


open(path);
 
// Spustíme TWS.
run("Trainable Weka Segmentation");
// Lepší je počkat.
wait(delay);
selectWindow(twsWindowName);

// Připravné operace.
call("trainableSegmentation.Weka_Segmentation.setFeature", "Hessian=false");
call("trainableSegmentation.Weka_Segmentation.setMembranePatchSize", "16");
call("trainableSegmentation.Weka_Segmentation.setMaximumSigma", "8.0");
// Přejmenování a přidání tříd.
call("trainableSegmentation.Weka_Segmentation.changeClassName", "0", "background");
call("trainableSegmentation.Weka_Segmentation.changeClassName", "1", "cell wall");
call("trainableSegmentation.Weka_Segmentation.createNewClass", "cell no phenolics");
call("trainableSegmentation.Weka_Segmentation.createNewClass", "cell with phenolics");

// Stanovení "oblasti zájmu" třídy - kde bude probíhat trénink pro danou třídu.
// Možná by se oblast zájmu mohla nastavit i pro ostatní třídy?
/*
makeRectangle(0, 0, 100, 100);
title = "Vyberte ROI pro cell wall";
msg = "Vyberte obdélník\nPro pokračování klepněte na 'OK'.";
waitForUser(title, msg);
// add one region of interest to each class
call("trainableSegmentation.Weka_Segmentation.addTrace", "1", "1");
*/

// BACKGROUND
run("Line Width...", "line=50");
setTool("freeline"); 
wait(delay);
if (showMessages) {
  msg = "<html>Vyberte vzorky pro trénink pozadí a přidávejte je tlačítkem <strong>Add to background</strong>.<br />"
      + "Šířku linky upravte poklepáním na Freehand lines.</html>";
  showMessage(msg);
}