Wenn Sie sich aus irgendeinem Grund auf die Verwendung morphologischer Operationen beschränken, können Sie ein "Abstimmungsschema" für orientierte Abschlussoperationen in Betracht ziehen.
Ein Problem bei morphologischen Operationen ist, dass sie die Richtwirkung nicht wirklich berücksichtigen. Für das mittlere Pixel eine Nachbarschaft wie diese
1 0 0
1 1 0
0 1 1
ist wirklich nicht anders als eine Nachbarschaft wie diese
0 1 0
1 1 0
1 1 0
Dies kann zu Problemen führen, da Dehnung und Erosion nicht direktional beeinflusst werden, wenn Sie dies wünschen. Sie können also die am besten geeignete richtungsabhängige morphologische Operation finden, indem Sie Kernel wie diese verwenden:
1 1 0 1 0 0 1 0 0
0 1 0 1 1 0 1 1 0
0 1 1 0 1 1 0 1 1 . . .
Dies wäre mit 5 x 5-Kerneln besser, aber ich denke, die Idee ist klar genug. Grundsätzlich ist die Idee eines Eckenerkennungskerns etwas gedehnt, sodass es sich um einen Liniensegmenterkennungskern handelt. Sie können es auch verwenden, um die am besten passenden Kurven zu finden:
0 0 0 1 1
0 0 1 1 0
0 1 1 0 0
0 0 1 1 0
0 0 0 1 1
Dies führt natürlich zu einer großen Anzahl von Kerneln, aber wenn die Grundidee für Sie vielversprechend ist, können Sie die Technik so optimieren, dass der am besten passende Kernel in einem Durchgang gefunden wird.
In jedem Fall erfordert jede Operation bei (x, y) mehr Berechnungen als ein herkömmlicher morphologischer Schritt, wenn Sie mehrere Kernel und eine bestimmte Logik verwenden:
- Wenden Sie auf jedes Pixel (x, y) mehrere morphologische Operatoren an. Berechnen Sie für jeden Operator sowohl das Ergebnis der morphologischen Operation als auch den Grad, in dem die Eingabe mit dem Kernel übereinstimmt. ("Grad" = Anzahl der übereinstimmenden Pixel)
- Wählen Sie das morphologische Ergebnis für den Kernel, das der tatsächlichen Ein / Aus-Pixelkonfiguration am ehesten entspricht.
Die Größe des Kernels muss an die Größe der Eingabe angepasst werden. Anstatt einen größeren Kernel zu verwenden, könnten Sie einen "verteilten" Kernel verwenden, um die Anzahl der Operationen zu verringern. Der folgende Kernel ist nur ein 3 x 3-Kernel mit einem Radius größer als 1.
1 0 0 0 0 0 0
0 0 0 0 0 0 0
1 0 0 1 0 0 0
0 0 0 0 0 0 0
1 0 0 0 0 0 1