La détection des bords peut-elle être effectuée dans le domaine fréquentiel?

11

Peut-on profiter du fait que les composantes haute fréquence dans la FFT d'une image correspondent généralement à des contours, pour mettre en œuvre un algorithme de détection de contours dans le domaine de Fourier? J'ai essayé de multiplier un filtre passe-haut par la FFT d'une image. Bien que l'image résultante corresponde aux bords, ce n'était pas exactement la détection des bords établie à l'aide des matrices de convolution. Existe-t-il un moyen de détecter les contours dans le domaine Fourier, ou ce n'est pas possible du tout?

rounak
la source

Réponses:

6

Étant donné que la convolution dans le domaine spatial est une multiplication dans le domaine de Fourier (fréquence), vous pouvez effectuer une détection de bord dans le domaine de Fourier en multipliant les spectres de l'image et le noyau de détection de bord, puis effectuer l'IFFT sur le résultat.

Je pense que le filtre passe-haut à lui seul n'est pas approprié pour la détection des bords car il conserve toutes les caractéristiques haute fréquence (par exemple, les pics et les coins nets) qui ne sont généralement pas classés comme des bords.

Des méthodes de détection de bord plus avancées seraient délicates dans le domaine fréquentiel car les bords sont mieux décrits dans le domaine spatial (à mon avis).

La question est pourquoi faire la détection de bord en utilisant la FFT en premier lieu? Est-ce pour des raisons de performances? Si c'est le cas, peut-être que l'image filtrée passe-haut (produite rapidement par FFT) peut être filtrée à nouveau rapidement pour supprimer les parties non-bords.

Libor
la source
Oui, la pensée était due à des considérations de performances, car Matlab prend énormément de temps pour itérer sur chaque pixel de l'image. Va essayer de remplir le filtre de convolution et de prendre sa FFT et de filtrer l'image. Merci!
rounak
Les bords sont basés décrits dans une certaine saveur du domaine des ondelettes (à mon avis);)
Henry Gomersall
1
cela dépend tout de votre définition d'un bord: si vous zoomez dessus, il "se déplacerait" dans le domaine fréquentiel vers des fréquences plus basses. Ainsi, un bord il ne suffit pas de le définir comme une caractéristique haute fréquence.
meduz
5

Habituellement, la détection des bords se fait par une convolution d'un filtre / noyau 2-D comme Roberts Cross ou une formulation Sobel . Puisqu'il s'agit de convolutions, les règles LTI s'appliquent, comme pouvoir les appliquer de manière équivalente dans le domaine fréquentiel. C'est-à-dire, prendre à la fois le noyau et l'image dans le domaine fréquentiel via DFT, les multiplier ensemble, puis IDFT le résultat dans le domaine spatial.

Je dois également ajouter que les noyaux dans le domaine spatial tentent en fait d'exploiter les caractéristiques de haute fréquence spatiale des bords. Par exemple, si vous regardez Roberts, vous pouvez voir comment il fait une différenciation entre les points diagonaux - c'est-à-dire une opération de filtrage passe-haut.

Spacey
la source
1

Une seule étape et une seule dent de scie produisent une belle relation linéaire entre la fréquence et la phase dans le domaine fréquentiel, la pente de la phase non enveloppée dépendant de l'emplacement du bord dans la fenêtre FFT. Pour détecter ou estimer l'emplacement d'un front unique supposé, vous pouvez essayer de dérouler la phase dans le domaine fréquentiel et voir si le résultat a une corrélation linéaire suffisante pour passer un certain seuil de détection.

hotpaw2
la source