GN⁺ 6달전 | parent | ★ favorite | on: 디더링(dithering) – Part 1(visualrambling.space)
Hacker News 의견
  • 이건 halftone 기법임. 즉, 실제 팔레트보다 더 많은 색이 있는 것처럼 보이게 하는 방식인데, 내가 보기엔 dithering은 아님
    dithering은 팔레트가 충분히 크지 않아 생기는 밴딩(banding) 을 없애는 기술이라고 생각함
    여기서 보여준 halftone은 2색 팔레트를 약 20색 정도로 확장하지만 여전히 밴딩이 뚜렷함
    이런 밴딩은 색을 훨씬 더 많이 쓰거나(예: 256단계 그레이스케일, RGB라면 256³) 혹은 dithering으로 제거할 수 있음
    아마 마지막에 예고된 error diffusion 기법이 내가 말하는 그 부분일 것 같음
    dithering의 핵심은 노이즈인데, 이 데모에는 노이즈가 전혀 없음. 모든 게 결정적(deterministic)임
    그래도 프레젠테이션 자체는 정말 멋졌음

    • error-diffusion dithering이나 blue-noise/white-noise 패턴을 사용하는 dithering도 사실 결정적임
      일반적으로 노이즈는 양자화(quantization) 과정에서 생기며, dithering은 그 노이즈를 형태 조정하는 기술임
      여기서 사용된 Bayer-matrix ordered dithering은 노이즈를 고주파 영역에 집중시켜 눈에 덜 띄게 하지만, 저주파 영역에는 여전히 밴딩이 남음
      Dave Long이 말했듯이 Bresenham 선 알고리즘도 일종의 dithering으로 볼 수 있음. 신호가 밝기가 아니라 펜의 위치인 셈임
      관련 논의가 며칠 전에도 있었음 — 이 스레드 참고
    • 네가 말한 걸 보고 찾아봤는데, 이런 기법도 여전히 ordered dithering으로 불린다고 함
      위키피디아 문서
    • 밴딩을 줄이거나 없애는 dithering은 정말 인상적임
      예전에 NeXT 컬러 머신은 12비트(채널당 4비트) 디스플레이였지만, dithering을 잘 쓰면 24비트 true color처럼 보였음
    • 나는 픽셀 아티스트인데, 이 기법을 쓰는 사람들은 전부 dithering이라고 부름
    • 이름 그대로 ordered dithering이라 부름
  • Daniel Shiffman의 Coding Train 영상 두 개를 추천함
    Turning Images into Dots: The Magic of Dithering
    Coding Challenge 181: Weighted Voronoi Stippling

  • 흥미로운 주제였음. 애니메이션도 좋았고 노력의 흔적이 보였음
    하지만 이런 인터랙티브 프레젠테이션은 전통적인 블로그 글보다 읽기 어려움
    글의 구조가 한눈에 안 들어오고, 문장 단위로 읽어야 해서 빠르게 훑어보기 힘들었음

    • 이건 블로그보다는 비디오에 가까운 형식으로 보는 게 맞을 듯함
      사용자가 속도를 조절할 수 있는 인터랙티브 비디오 느낌임
      나도 평소엔 텍스트를 선호하지만, 이런 형식은 괜찮은 변주라고 생각함
  • 나는 여러 디자인 프로젝트에서 orderederror diffusion dithering을 시각 언어로 사용했음
    특히 테크/컴퓨터/블록체인 관련 작업에서 정적 또는 애니메이션 형태로 활용했음
    이런 오래된 기술에는 묘한 따뜻함과 향수가 있어서 새로운 아이디어와 결합하기 좋음
    내 작업 예시는 인스타그램에 있음:
    D.Y.O.R. / Printed / Titles / Dithering 실험

    • 좋은 링크였음. 나도 레트로 스타일 포트폴리오를 만들며 retro shader를 실험 중임
      내 사이트 olsz.me 참고
  • 예전에 두 가지 dithering 간 전환을 만든 적 있음
    GitHub 프로젝트

  • 이걸 정말 좋아하고 싶었는데, 움직이는 패턴 위의 텍스트를 읽는 게 너무 힘들었음

    • 나도 7초 정도 버텼음
  • 시각화 방식은 멋졌지만 threshold map 부분이 이해되지 않았음
    맵을 어떻게 만들고 임계값을 어떻게 정하는지 설명이 부족했음
    저자에게 너무 당연해서 생략된 건지 모르겠음

    • ordered threshold map을 만드는 건 꽤 복잡한 아이디어가 필요함
      핵심은 ‘threshold’ 개념을 기억하는 것임. 회색 픽셀이 임계값을 기준으로 흑백으로 바뀜
      예를 들어 dithered_color = (raw_color > threshold_color) ? white : black
      threshold를 랜덤으로 써도 됨. 평균값이 0.5가 되면 원래 회색을 잘 근사함
      중요한 건 흰 픽셀이 점점 늘어날 때 서로 붙지 않게 하는 것임.
      50% 회색은 체커보드 패턴, 25%는 2x2 중 한 픽셀만 흰색 등으로 설계할 수 있음
      이런 실험은 ShaderToy에서 직접 해보면 재미있음
    • 2편에서 threshold map을, 3편에서 error diffusion dithering을 다룬다고 함
    • 시각화는 아름다웠지만 나도 threshold map 부분이 헷갈렸음
      처음엔 ‘이진 이미지’를 입력으로 쓰는 줄 알았는데, 나중엔 회색 영역을 입력으로 쓰더라
    • 다음 편은 드래곤볼 Z 예고편처럼 느껴졌음
  • dithering은 10비트 색상을 지원하지 않는 모니터에서도 충분히 10비트처럼 보이게 함
    밴딩이 사라지고 노이즈가 색 깊이 부족을 가려줌
    즉, 현대에도 유용한 기술임. 단순히 레트로 아트용이 아님

    • 맞음. 하지만 대부분의 소프트웨어는 이걸 하지 않음
      사람들은 여전히 팔레트 dithering만 떠올림
      8비트/채널은 충분하지 않음. 감마 보정 때문에 실제로는 약 220단계 정도임
      나는 이런 문제를 해결하려고 Rust crate dithereens를 유지보수 중임
      README 상단의 그래디언트를 보면 왜 중요한지 바로 알 수 있음
    • 현대 인쇄에서도 dithering을 씀
      고비트 이미지를 10비트나 8비트로 줄일 때 랜덤 dithering이 충분히 효과적임
      Photoshop은 16비트→8비트 변환 시 기본적으로 dithering을 적용함
      다른 소프트웨어는 그렇지 않아서, 큰 포스터를 인쇄할 때 밴딩이 생기면 바로 깨닫게 됨
    • LCD 패널은 오래전부터 temporal dithering을 사용해 더 높은 비트 깊이를 흉내냄
      6비트 TN 패널을 8비트처럼 보이게 했고, 지금은 HDR-10에도 쓰임
      이 방식은 픽셀을 빠르게 깜빡여 색을 섞는 단순한 알고리즘임
      Frame rate control 위키 문서
  • 프레젠테이션 형식이 훌륭했고 다음 파트도 기대됨
    예전에 ZX Spectrum Raytracer에서 ordered dithering을 써봤는데, 구현이 간단하고 결과가 좋았음
    프로젝트 링크
    80년대에는 성능 문제로 잘 안 썼던 듯함. 90년대 Windows 3.1이나 Monkey Island VGA 배경에서는 본 기억이 있음

  • 멋진 데모였지만, dithering을 “더 많은 색조의 환상(illusion) ”이라 부르는 건 정확하지 않은 것 같음
    dither된 이미지를 저역통과 필터로 처리하면 실제로 그 중간 색조가 존재함
    마치 클래스 D 앰프가 펄스 신호를 내보내지만, 필터 후엔 실제 아날로그 음이 되는 것처럼
    결국 우리의 시각과 거리 자체가 그 필터 역할을 하는 셈임

    • 그래도 나는 그걸 환상이라 부름
      주의 깊게 보면 실제로 그 색이 존재하지 않음을 알 수 있음
      흑백 픽셀만으로 회색을 인식하지만, 동시에 그게 착시임을 인지할 수 있음
      그래서 ‘illusion’이라는 표현이 맞다고 생각함

텍스트는 빼고, 영상만 강당에서 강의한다는 인터렉티브 비디오로의 접근으로, 강단을 찢어버릴정도의 폭풍간지 아이템입니다. 이미지 그레이스케일을 3d로 레이어화 시켜 보여주는 장면은 굉장히 친절한 설명이라 생각 됩니다