2009-08-11 44 views
11

Thuật toán tốt để tạo hình ảnh bán sắc (như this) là gì? Một tìm kiếm google nhanh chóng mang đến một loạt các giấy tờ về chủ đề này, nhưng rất khó để đánh giá đó là tốt, hiệu quả, vv Có một sự lựa chọn tốt nhất để làm điều này loại?Thuật toán để tạo hình ảnh bán sắc?

+0

Có một cái gì đó nhiều hơn cho câu hỏi của bạn mà bạn muốn trả lời? Biết thêm chi tiết? – NoMoreZealots

Trả lời

16
  • Lọc xuống độ phân giải muốn "chấm" được phân tách bằng.
  • Lấy cường độ trung bình của nhóm pixel trong khu vực đó.
  • Vẽ chấm sao cho bề mặt diện tích của dấu chấm bằng phần trăm từ trắng đến đen của cường độ trung bình .

Hãy nghĩ đến các nhóm pixel dưới dạng lưới lục giác. Sử dụng một chức năng vòng tròn để quyết định các điểm ảnh đi vào nhóm. Bạn có thể điều chỉnh chồng chéo của các vòng tròn để điều chỉnh màu đen/độ bão hòa của đầu ra. Điều này thực sự được thiết kế cho đầu ra có độ phân giải cao như in. Nếu bạn đang thực hiện điều này để hiển thị trên màn hình dưới dạng hiệu ứng hình ảnh, hãy đảm bảo bạn sử dụng thường trình vẽ vòng tròn chống răng cưa để bù cho độ phân giải thấp của màn hình. (So ​​với bản in, thậm chí HD không thực sự cao như vậy.)

Nếu bạn làm điều này vì bạn thích hiệu ứng, điều đó thật tuyệt. Nhưng nếu bạn chỉ muốn hoà mình vào một hình ảnh đen trắng, hãy cân nhắc sử dụng hoà sắc "Floyd-Steinberg". Nó cung cấp kết quả chất lượng cao và phân phối lỗi trên hình ảnh. http://en.wikipedia.org/wiki/Floyd-Steinberg_dithering

+0

http://en.wikipedia.org/wiki/Dither – kenny

+0

Chúng có một ví dụ hay về "floyd-stienberg". Nó cho tôi kết quả tốt nhất trong quá khứ. – NoMoreZealots

+0

Thuật toán "vẽ dấu chấm" được nêu ở đây không đạt được hiệu ứng "chấm đen" trên trang web ví dụ được trích dẫn. Nhưng việc xây dựng màn hình và điều chỉnh hình dạng chấm cho hiệu ứng "chấm đen" sẽ nhanh hơn khi chạy. –

0

Cách dễ nhất để thực hiện việc này là đi pixel theo pixel và sử dụng tính ngẫu nhiên: cho mỗi pixel, xác suất tô màu nó trở lại = bóng tối của màu gốc.

Điều đó có thể cung cấp cho bạn thuật toán phối màu hai dòng. Nó sẽ không đẹp như Floyd-Steinberg (bởi vì nó theo dõi các lỗi), hoặc là nghệ thuật như là "ngói và sau đó đặt đĩa trong mỗi ngói sao cho phần nhỏ của màu đen = bóng tối trung bình trong ngói gốc", nhưng nó hoạt động khá tốt trong thực tế.

+0

Điều này dẫn đến điều gì đó mà mật độ đầu ra tạo ra mức xám đầu vào, nhưng nó không đạt được sự xuất hiện của cụm chấm của ví dụ cụ thể được trích dẫn. –

+0

Halftone có nghĩa là (để trích dẫn wikipedia) "Halftone là kỹ thuật reprographic mô phỏng hình ảnh giai điệu liên tục thông qua việc sử dụng các dấu chấm, thay đổi kích thước hoặc trong khoảng cách." Các mẫu ông cho thấy kích thước khác nhau, tôi thay đổi khoảng cách. Cả hai đều mặc dù có một nửa, mặc dù tôi chắc chắn sẽ không giả vờ rằng tôi trông tốt như ví dụ: như đã nói, giá trị của câu trả lời này là nó cực kỳ đơn giản để thực hiện. – redtuna

+0

thỏ -> là (oops, xin lỗi về lỗi đánh máy! Tôi ước tôi có thể chỉnh sửa ý kiến ​​của mình) – redtuna

4

Halftoning rất hiệu quả.

Bán sắc một cấp: Nhập: Pixel từ hình ảnh của bạn; trước "màn hình" có chứa các giá trị ngưỡng. Khi chạy: Đối với mỗi kênh màu, đối với mỗi pixel, chọn một giá trị ngưỡng (chỉ mục vào mảng ngưỡng điều chỉnh kích thước mảng). Một so sánh giữa pixel và ngưỡng xác định liệu giá trị đầu ra có bật hay tắt.

Nó cũng tổng quát thành đầu ra đa cấp bằng cách sử dụng nhiều màn hình.

Phần thú vị là xây dựng màn hình (mảng ngưỡng). Có nhiều biến thể - dấu chấm (AM), ngẫu nhiên (FM), nhiều biến thể và giống lai bao gồm tiếng ồn xanh và tiếng ồn xanh (AM/FM). Và bạn thường muốn có một màn hình khác nhau cho mỗi kênh màu. Các màn hình chấm phân cụm truyền thống đặt dấu chấm của chúng trong lưới hình chữ nhật có thể được mô tả bằng tần số của chúng (tần số thấp = dấu chấm lớn) và góc (thường là 15 ° đối với Cyan, 75 ° đối với Magenta, 90 ° đối với Vàng và 45 ° đối với Đen) .

Nếu bạn muốn thử nghiệm, Bitmap của Photoshop với Phương pháp màn hình Halftone (xem tutorial) có trình tạo màn hình nội bộ và sẽ hiển thị hình ảnh thang độ xám thành bitmap giống như ví dụ của bạn.

Các phương pháp phối màu được đề xuất bởi những người khác liên quan đến tính toán nhiều pixel hơn và kết quả đầu ra không giống với ví dụ bán sắc được phân tách theo cụm của bạn.

+1

Ví dụ hoạt hình: http://www.openprocessing.org/visuals/?visualID=911 – biziclop

1

Có nhiều triển khai mã nguồn mở của thuật toán để tạo hình ảnh bán sắc. Bạn có thể xem mã nguồn. Dưới đây là một vài triển khai được phát triển trong Java sử dụng Marvin Image Processing Framework.

hình ảnh đầu vào:
enter image description here

Lỗi Diffusion (source):
enter image description here

Rylanders (source):
enter image description here

Dithering (source):
enter image description here

Circles (source):
enter image description here

Các vấn đề liên quan