Ahoj mám dotaz. Tady bylo vysvětleno jak funguje filtr Soble Edge Detection. Píše se tam, že výsledné černobílé obrázky se musí k sobě přidat (add). Není mi ale jasné jak. Myslí tím běžný matematický součet (edit: asi jsem už na to přišel, viz poznámka dole)? Když máme dva výsledky z matice X a matice Y a k tomu souřadnice bodu např. Xx, Xy a Yx, Yy, a jejich intenzity jsou 200 a 200 v tomto pořadí, pak výsledek bude 400 a po opravě 255? Nebo mysleli projet ty dvě matice ve smyčce a porovnat dvě intenzity a zvolit tu, která má vyšší hodnotu. To by mi totiž dávalo více smysl. Dole pod článkem pak jsou odkazy, kde jsem ale odpověď nenašel. Zde je to vysvětleno vzorcem:
Jako G = Gx + Gy. Přičemž chápu G jako výsledek po provedení filtru. Gx jako výsledek po aplikování matice X ve směru x a Gy jako výsledek po aplikování matice Y ve směru y.
Dále mám dotaz na ten vzorec pro výpočet úhlu
"The angle of orientation of the edge (relative to the pixel grid) giving rise to the spatial gradient is given by: " (nechápu tu větu)
a vzorec je théta = arctan (Gy/Gx)
A ještě tam je vzorec pythagorovy věty. Zajímá mě co z toho lze vyvodit prakticky. Byl bych schopen a jak to provést - jak změřit tu orientaci? Dejme tomu, že vím, že na obrázku který zachycuje na černém pozadí narysované parcely jsou čísla parcel ... typicky je tam lomítko. Jsem schopen díky tomuto vzorci provést detekci, abych našel to lomítko a potom následně kde začíná a kde končí číslo parcely? Chtěl bych totiž algoritmus, který (během detekce hranic polygonu - totiž parcely) odstraní to číslo. Takže bych chtěl vědět jak bych mohl toho vzorce využít pro případnou detekci toho lomítka a rámečku, který to lomítko ohraničuje.
Poznámka:
Našel jsem další zdroj, kde se to dělá v matlabu a vypadá to, že v tom hlavním odkazu bylo přidáním myšlen zápočet či výpočet podle pythagorovi věty. Tak to tedy řekli hodně špatně tedy nesrozumitelně. Podle matlabu:
% Calculate magnitude of vector
filtered_image(i+1, j+1) = sqrt(Gx.^2 + Gy.^2);
To konečně dává smysl!
Předchází tomu ale jiný kód kterému nerozumím. Chápu jen že Mx a My jsou matice.
% Gradient approximations
Gx = sum(sum(Mx.*input_image(i:i+2, j:j+2)));
Gy = sum(sum(My.*input_image(i:i+2, j:j+2)));
Takže se tam nějak zázračně provádí to násobení podle (či: "aplikování té") matice.
Ještě by mě tedy zajimalo to praktické využití vzorce pro výpočet úhlu théta. Jako využití v detekci.