Wie kann ich Kanten zwischen verschiedenen Farben gleicher Helligkeit erkennen?

7

Ich suche nach einem Algorithmus, der Kanten identifizieren kann, über die sich die Farbe stark ändert, anstatt nur Helligkeitsänderungen zu finden.

Geht es nur darum, einen anderen Farbraum mit vorhandenen Kantenerkennungsalgorithmen zu verwenden, oder gibt es einen besseren Ansatz?

Trichoplax
quelle
2
Ja, Sie möchten einen geeigneten Farbraum verwenden.
Julien Guertault

Antworten:

3

Ich denke, Sie können vom RGB-Raum zum HSV-Raum konvertieren, oder welcher Farbraum auch immer den Farbton in einem einzelnen Kanal hat.

Nehmen Sie den HUE-Kanal und machen Sie die Kantenerkennung auf diesem.

Hier ein einfaches Matlab-Skript, um das Ergebnis zu erzielen.

I = imread('image.png');
hsv = rgb2hsv(I);
hue = hsv(:,:,1);
edges = edge(uint8(hue),'sobel');
imshow(edges);
psicomante
quelle
2

Der Farbunterschied ist in einigen Farbkanälen ein Helligkeitsunterschied. Während also die Summe der einzelnen Kanäle gleich bleibt, gibt es einen Intensitätsunterschied, wenn es einen Farbunterschied gibt.

Jetzt legen die grundlegenden Algorithmen nicht wirklich fest, wie Sie die Mehrkanaldaten verwalten sollen. Es ist also nichts Falsches daran, einen anderen Farbraum zu verwenden. Andererseits sagt nichts, dass Sie die Faltung nicht auf alle Kanäle anwenden und dann das Ergebnis auswählen können, das am kontrastreichsten ist.

joojaa
quelle