Qual é a diferença entre as transformações de Hough e Radon?


34

Estou familiarizado com a transformação Radon aprendendo sobre tomografias computadorizadas, mas não com a transformação Hough. Wikipedia diz

O plano (r, θ) às vezes é chamado de espaço Hough para o conjunto de linhas retas em duas dimensões. Essa representação faz com que a Hough se transforme conceitualmente muito próxima da transformação bidimensional do radônio. (Eles podem ser vistos como maneiras diferentes de olhar para a mesma transformação. [5])

Sua saída parece a mesma para mim:

lado a lado rho vs teta para transformações de Hough e Radon

Então eu não entendo qual é a diferença. Eles são exatamente a mesma coisa vista de maneiras diferentes? Quais são os benefícios de cada visão diferente? Por que eles não são combinados na "transformação Hough-Radon"?


Ei, uma espécie de pergunta não relacionada, mas você poderia compartilhar seu esquema de cores do mapa de calor de Bezier que usou nesta imagem ? Parece muito bom, e eu queria saber se você tinha uma matriz de valores RGB descrevendo-o. M×3
usar o seguinte

@DumpsterDoofus Acho que não o publiquei porque é esquisito e eu queria polir primeiro, mas como ainda não o fiz: a versão não-bezier está aqui gist.github.com/endolith/2879736 e a tentativa do bezier está aqui gist .github.com / endolith / ef948b924abf289287bd também usada aqui flic.kr/p/dWSfUd
endolith

Obrigado, eu realmente descobri isso ontem à noite, ele pode ser escrito compactamente comoRGB(x)=((2x)xBoole[0x1]x2Boole[1x1]x(x+2)Boole[1x0]).
usar o seguinte

@DumpsterDoofus Sinta-se livre para limpar meu código :)
endolith

Respostas:


31

A transformação de Hough e a transformação de Radon são de fato muito parecidas entre si e sua relação pode ser fracamente definida como a primeira sendo uma forma discreta da segunda.

A transformação Radon é uma transformação matemática integral, definida para funções contínuas em em hiperplanos em . A transformação de Hough, por outro lado, é inerentemente um algoritmo discreto que detecta linhas (extensíveis a outras formas) em uma imagem por polling e binning (ou votação).R nRnRn

Eu acho que uma analogia razoável para a diferença entre os dois seria como a diferença entre

  1. calcular a função característica de uma variável aleatória como a transformada de Fourier de sua função de densidade de probabilidade (PDF) e
  2. gerando uma sequência aleatória, calculando seu PDF empírico por binograma de histograma e depois transformando-o adequadamente.

No entanto, a transformação Hough é um algoritmo rápido que pode ser propenso a determinados artefatos. O rádon, sendo mais matematicamente sólido, é mais preciso, mas mais lento. De fato, é possível ver os artefatos no exemplo de transformação Hough como estrias verticais. Aqui está outro exemplo rápido no Mathematica:

img = Import["http://i.stack.imgur.com/mODZj.gif"];
radon = Radon[img, Method -> "Radon"];
hough = Radon[img, Method -> "Hough"];
GraphicsRow[{#1, #2, ColorNegate@ImageDifference[#1, #2]} & @@ {radon,hough}]

A última imagem é realmente fraca, embora eu a tenha negado para mostrar as estrias na cor escura, mas está lá. Inclinar o monitor ajudará. Você pode clicar em todas as figuras para obter uma imagem maior.

Parte da razão pela qual a semelhança entre os dois não é muito conhecida é porque diferentes campos da ciência e da engenharia historicamente usaram apenas um desses dois para suas necessidades. Por exemplo, na tomografia (médica, sísmica, etc.), microscopia etc., a transformação de radônio talvez seja usada exclusivamente. Acho que a razão disso é que manter os artefatos no mínimo é de extrema importância (um artefato pode ser um tumor diagnosticado incorretamente). Por outro lado, no processamento de imagens, visão computacional etc., é a transformação de Hough que é usada porque a velocidade é primária.


Você pode achar este artigo bastante interessante e atual:

M. van Ginkel, CL Luengo Hendriks e LJ van Vliet, Uma breve introdução às transformações de Radon e Hough e como elas se relacionam entre si , Quantitative Imaging Group, Departamento de Ciência e Tecnologia de Imagens, TU Delft

Os autores argumentam que, embora os dois estejam intimamente relacionados (em suas definições originais) e equivalentes, se você escrever a transformação de Hough como uma transformação contínua, o Radon tem a vantagem de ser mais intuitivo e ter uma base matemática sólida.


Há também a transformada generalizada de Radon semelhante à transformada generalizada de Hough, que trabalha com curvas parametrizadas em vez de linhas. Aqui está uma referência que lida com isso:

Toft, PA, "Utilizando a transformação generalizada de Radon para detecção de curvas em imagens ruidosas" , IEEE ICASSP-96, vol. 4, 2219-2222 (1996)


Ah, eu pensei que aqueles foram adicionados à imagem intencionalmente. Não sabia que eram artefatos. Então Radon é Hough como DFT é FFT? Mas há também a transformação Hough generalizada que pode encontrar círculos e outras coisas, e talvez coisas semelhantes para a transformação Radon?
endolith

1
Sim, existe a transformação generalizada de Radon que funciona para curvas parametrizadas. Eu diria que é mais difícil fazê-lo em curvas completamente arbitrárias, mas não sei muito sobre isso. Eu adicionei uma referência à minha resposta.
Lorem Ipsum

A transformação Radon também pode ser acelerada com os métodos FFT. Eu estou supondo que o Hough não pode ser? Hough ainda é mais rápido? Suponho que depende do tamanho da imagem?
endolith

1
@ endolith É minha experiência que Hough é mais rápido. No entanto, meu uso desses dois é detectar as poucas linhas estranhas em algo com o qual estou brincando. Nunca o usei em trabalhos sérios, nem implementei os meus. Por isso, sugiro fazer isso como uma nova pergunta, pois não posso responder com certeza.
Lorem Ipsum

6

Além da resposta de Lorem Ipsum, que explica a transformação de Hough como uma forma discreta de transformação de radônio, gosto desta explicação descritiva - também de acordo com Ginkel e outros :

ρθ

θθΔρ(x,y)

ΔθΔρ

θθ

Eu acho que Hough é dominante em muitos campos por causa de seu algoritmo simples, enquanto o Radon é usado onde a precisão é crucial ou existe um conhecimento a priori.

Veja também as referências do Matlab (expanda a guia Algoritmo ):

www.mathworks.com/help/images/ref/radon.html

www.mathworks.com/help/images/ref/hough.html

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.