Regiões

Regiões

por Fabio Brzostek Muller -
Número de respostas: 5

Olá,

Quando eu peço para meu programa mostrar região por região, ele mostra todas corretamente, exceto a preta (que deve incluir as linhas que separam as regiões). Quando ele vai mostrar a região preta, ele mostra (para as imagens imagem2.ppm, imagem3.ppm e imagem4.ppm) apenas o contorno da região vermelha no canto esquerdo de baixo e uma linha preta de contorno subindo pelo canto esquerdo. Já para a imagem1.ppm, ele mostra apenas o contorno da região preta da esquerda (a região em si não) e o contorno das regiões branca e vermelha vizinhas à preta.

Além disso, nessas imagens, quando eu clico em uma região preta para mudar sua cor, o que muda é apenas esse contorno que aparece quando eu peço para mostrar a região.

Já passei um certo tempo procurando a causa disso e não consegui achar, não sei se algo passou batido ou se é um erro maior, mas as outras regiões trocam de cor corretamente e são exibidas individualmente sem problemas também. Alguém sabe (ou tem qualquer ideia sobre) o que está acontecendo?

Em resposta à Fabio Brzostek Muller

Re: Regiões

por Gabriel Ogawa -

O mesmo aconteceu comigo e era um problema no método recursivo com as mudanças ao pIni. Como na função você teoricamente sempre checa uma direção primeiro, no caso das linhas ele vai seguindo a linha checando sempre essa direção fazendo chamadas aos pixels da linha, e por algum problema na volta das chamadas a checagem dos pixels ao redor está falhando ou a ligação na lista tem algum problema, por exemplo, o prox da célula atual não apontar corretamente para o próximo pixel ou ser substituído por outro pixel em alguma outra chamada recursiva que por acidente recebeu um endereço de célula repetido.

Em resposta à Gabriel Ogawa

Re: Regiões

por Fabio Brzostek Muller -

Como você conseguiu achar o erro? Não estou conseguindo... Um outro detalhe é que, pedindo para o meu programa imprimir o número de regiões e o número de pixels em cada, que nem o executável fornecido no site, o número de regiões é igual (para as imagens de 1 a 4) e o número de pixels em cada região é igual nas imagens 1 e 4, e nas imagens 2 e 3 duas das regiões têm número de pixels diferentes comparando o resultado do meu programa com o do executável...

Em resposta à Gabriel Ogawa

Re: Regiões

por Fabio Brzostek Muller -

De fato, mudando a  ordem das direções que a função procura por vizinhos os resultados em relação às linhas de contorno e regiões pretas mudam, então o problema deve ser bem parecido mesmo. Mas como corrigir isso? 

Em resposta à Fabio Brzostek Muller

Re: Regiões

por Gabriel Ogawa -

Eu acabei reescrevendo a função algumas vezes mudando a forma e ordem de como eu ligo as células de pixels na lista, pra ter certeza de que depois que há a volta das chamadas recursivas para a função eu tenho em pIni um ponteiro para o ponteiro que indica a atual última célula da lista. Além disso, eu checo todas as direções antes de fazer as chamadas recursivas, salvando em flags quais direções tem um pixel a ser verificado, só não tenho certeza se isso é realmente necessário nem se foi isso que arrumou o problema pensativo