Estenda a linha

8

Tarefa

Dada uma imagem com uma linha, produza ou exiba uma imagem com a linha estendida até a borda da imagem. A linha é preta e o fundo é branco. O tamanho da imagem é 100x100A imagem vem em qualquer formato razoável (por exemplo jpg, png, ppm, bmp).

Formato de linha

Estou usando uma versão simplificada do algoritmo de linha de Bresenham para desenhar linhas. As linhas terão apenas uma inclinação inteira, de modo que a linha nunca cubra parcialmente um pixel, mas não o colorirá:

( Imagem da Wikipedia )

No mínimo, a linha será 3x3, a menos que seja reta; nesse caso, você verá apenas 3x1 ou 1x3 na imagem. As linhas também terão um lado na borda da imagem, portanto você só precisará estendê-lo em uma direção.

Exemplo ( .pnglinha vermelha adicionada para que você possa vê-lo):

insira a descrição da imagem aqui insira a descrição da imagem aqui

Exemplos reais ( .png)

insira a descrição da imagem aqui insira a descrição da imagem aqui

====================

insira a descrição da imagem aqui insira a descrição da imagem aqui

====================

insira a descrição da imagem aqui insira a descrição da imagem aqui

====================

insira a descrição da imagem aqui insira a descrição da imagem aqui

====================

insira a descrição da imagem aqui insira a descrição da imagem aqui

J Atkin
fonte
O programa precisaria tomar a entrada da imagem como o nome do arquivo ou seria permitido receber outras formas? (por exemplo, hexdump, link, upload, copiar / colar) Eu só pergunto porque algumas linguagens de programação exigiriam o uso de outras formas de entrada.
21416 DanTheMan
1
Não conheço nenhum idioma que não consiga ler um arquivo de imagem. Você conhece um formato comum que eu possa incluir na seção E / S como válido?
precisa
@JAtkin podemos usar a entrada como um URL?
Downgoat
Eu acho ... Por que você iria querer?
precisa

Respostas:

2

Mathematica, 125 bytes

ImageRotate@Image@SparseArray[Array[Floor,101,#&@@ImageLines[ColorNegate@#,Method->"RANSAC"]]+1->0,{101,101},1][[;;-2,;;-2]]&

Explicação

ImageLinesdetectar linhas na imagem com o método RANSAC. Pegamos a primeira linha detectada e a convertemos novamente em uma imagem. Toda a função pega uma imagem como argumento e retorna uma imagem.

njpipeorgan
fonte