Mở rộng dòng


8

Bài tập

Đưa ra một hình ảnh với một dòng trên đó, tạo hoặc hiển thị một hình ảnh với dòng mở rộng dòng đến cạnh của hình ảnh. Dòng màu đen và nền màu trắng. Kích thước ảnh là 100x100những hình ảnh đi kèm trong bất kỳ định dạng hợp lý (ví dụ như jpg, png, ppm, bmp).

Định dạng dòng

Tôi đang sử dụng một phiên bản đơn giản của thuật toán dòng của Bresenham để vẽ các đường. Các dòng sẽ chỉ có độ dốc nguyên để dòng sẽ không bao giờ che một phần pixel mà không tô màu cho nó:

(Ảnh Wikipedia )

Tối thiểu dòng sẽ là 3x3 trừ khi đường thẳng, trong trường hợp đó bạn sẽ chỉ thấy 3x1 hoặc 1x3 trong ảnh. Các dòng cũng sẽ có một bên trên cạnh của hình ảnh, vì vậy bạn chỉ phải mở rộng nó theo một hướng.

Ví dụ ( .png, dòng màu đỏ được thêm vào để bạn có thể thấy nó):

nhập mô tả hình ảnh ở đây nhập mô tả hình ảnh ở đây

Ví dụ thực tế ( .png)

nhập mô tả hình ảnh ở đây nhập mô tả hình ảnh ở đây

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

nhập mô tả hình ảnh ở đây nhập mô tả hình ảnh ở đây

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

nhập mô tả hình ảnh ở đây nhập mô tả hình ảnh ở đây

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

nhập mô tả hình ảnh ở đây nhập mô tả hình ảnh ở đây

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

nhập mô tả hình ảnh ở đây nhập mô tả hình ảnh ở đây


Chương trình sẽ phải lấy đầu vào hình ảnh làm tên tệp hay nó sẽ được phép lấy đầu vào ở các dạng khác? (ví dụ hexdump, liên kết, tải lên, sao chép / dán) Tôi chỉ hỏi vì một số ngôn ngữ lập trình sẽ yêu cầu sử dụng các hình thức nhập khác.
DanTheMan 17/2/2016

1
Tôi không biết bất kỳ ngôn ngữ nào không thể đọc tệp hình ảnh. Bạn có biết một định dạng phổ biến mà tôi có thể đưa vào phần I / O là hợp lệ không?
J Atkin

@JAtkin chúng ta có thể lấy đầu vào làm URL không?
Hạ cấp

Tôi đoán ... Tại sao bạn muốn?
J Atkin

Câu trả lời:


2

Toán học, 125 byte

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

Giải trình

ImageLinesphát hiện các dòng trong ảnh với phương thức RANSAC. Chúng tôi lấy dòng được phát hiện đầu tiên và chuyển nó trở lại thành hình ảnh. Toàn bộ hàm lấy một hình ảnh làm đối số và trả về một hình ảnh.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.