FET_Destroyer Posted April 13, 2012 at 03:42 PM Report #448988 Posted April 13, 2012 at 03:42 PM Olá. Sou novo a postar neste forum mas costumo acompanha-lo pois interessa-me bastante a programação. Gostaria de saber se alguém me pode ajudar com isto. Tenho uma imagem com apenas um circulo e gostaria de calcular o centro desse circulo. Vi algoritmos na net como a tramsformada de hough no entanto não a posso aplicar devido à falta de recursos do micro que estou a usar, nomeadamente RAM. Gostaria de saber se existem outras opçoes viaveis, podem não ser MEGA precisas, apenas que calculem o centro aproximado de um circulo. Cumprimentos
pmg Posted April 13, 2012 at 04:01 PM Report #449000 Posted April 13, 2012 at 04:01 PM O circulo é uma linha ou uma área (ie, o círculo está pintado)? Suponho que tens maneira de descobrir informações sobre a imagem. Procura, possivelmente pixel-a-pixel, um pixel aceso (pertencente ao circulo). A recta horizontal que passa por esse pixel intersecta o circulo em dois pontos: chama esses pontos A e B (se o circulo for uma área escolhe os pontos mais afastados). A recta vertical que passa por esse pixel intersecta o circulo em dois pontos: chama esses pontos C e D (idem como A e B). O centro do circulo é a intersecção da recta perpendicular a AB que passa pelo meio de AB e da recta perpendicular a CD que passa pelo meio de CD. What have you tried? Não respondo a dúvidas por PM A minha bola de cristal está para compor; deve ficar pronta para a semana. Torna os teus tópicos mais atractivos e legíveis usando a tag CODE para colorir o código!
HappyHippyHippo Posted April 13, 2012 at 04:18 PM Report #449013 Posted April 13, 2012 at 04:18 PM pseudo-código : variável dist = 0 varável centro = 0 para cada linha da imagem guardar os y's dos pontos da circunferência encontrados se foram encontrados 2 então calcular a distância dos y's se a distância calculada for maior que a guardada na variável dist então guardar a distância na variável dist guardar o meio dos dois pontos na variável centro caso contrário (a distância é menor que a guardada, isto é a linha que passa pelo centro da circunferência já foi processada) retornar os indices : y = numero da linha que se está a ser processada / x = variável centro IRC : sim, é algo que ainda existe >> #p@p Portugol Plus
pikax Posted April 13, 2012 at 08:29 PM Report #449069 Posted April 13, 2012 at 08:29 PM verificas os pixeis e guardas a posicao dos pixeis mais 'a esquerda(ou cima) e direita(ou baixo), mas tens que ver que a imagem deve ter pixeis meio transparente(para dar a sensação de circulo perfeito), depois basta calculares quantos pixeis sao de um ao outro depois e' calcular a relacao entre pixeis e distancia real. Penso que desta forma consumiras pouca RAM, mas nao sei nunca tentei implementar algo do genero Por muito mais que que estude só aprendo uma coisa, que ainda tenho muita coisa para aprender. A beleza de um código está em decompor problemas complexos em pequenos blocos simples. "learn how to do it manually first, then use the wizzy tool to save time." "Kill the baby, don't be afraid of starting all over again. Fail soon, learn fast."
Dr_Lion Posted April 21, 2012 at 06:47 PM Report #450439 Posted April 21, 2012 at 06:47 PM Outra opção é: Escolheres 4 pontos distintos da circunferência, traçar duas rectas cada uma a passar por 2 desses pontos, e é calcular a intersecção das duas rectas.
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now