포토쇼가 되고 싶다 Part 1: 톤 커브

포토 쇼가되고 싶다.


  • 화상 가공 시스템의 기능을 하나씩 구현하는 것

  • 개요


  • 톤 커브
  • LUT
  • 노출
  • 감마
  • 양 로그 스케일
  • 대비

  • 참고 :이 기사는 Python3 & OpenCV에서 이미지 처리 배우기 [3] ~ 톤 커브와 LUT를 이해하는 구현 실험과 내용이 악마만큼 덮여 있습니다

    톤 커브



    ↓이


    요컨대 $[0, 255]\rightarrow [0, 255]$의 함수

    LUT



    모든 픽셀에 매번 계산하면 너무 무거워 쌓이지 않습니다.

    →$[0, 255]\rightarrow [0, 255]$로, 기본적으로는 정수치이므로 256×256의 표가 있으면 좋다

    →LUT(Look Up Table)

    톤 커브 편집계의 이펙트는, 모두 「LUT를 만지기→LUT에 따라 화상을 변환한다」라고 하면 좋다

    editLUT.js
    function editLUT(img) {
      const lut = new Array(256);
      for (let i = 0; i < 256; i += 1) {
        let val = hoge(i); //ここでエフェクトをかける
        lut[i] = val;
      }
      LUT(img, lut);
      return img;
    }
    

    노출



    k배만
    f(v) = kv
    

    다만, k가 1을 넘을 때 밝은 곳이 클립하므로 대처한다

    exposure.js
    function exposure(x, t) {
      return Math.min(x * t, 255);
    }
    

    감마



    정규화하고 감마만
    f(v) = v^\gamma
    

    (자세한 내용은 감마 보정의 똥 참조)

    gammaFunc.js
    const gammaFunc = (val, gamma) => 255 * Math.pow(val / 255, 1 / gamma);
    

    양 로그 스케일



    감마보다 양쪽 끝에 부드럽습니다.
    (자세한 내용은 스케일 로그 곡선을 톤 커브로 사용하는 이미지 보정 참조)
    f(v) = \frac{{\rm log}(1+Cv)}{{\rm log}(1+C)}\\
    

    역함수:
    f^{-1}(v) = \frac{e^{v{\rm log}(1+C)}-1}{C}
    

    log_log_scale.js
    const log_log_scale = (v, C) =>
        C == 0 ? v
      : C > 0 ? 255*Math.log(1+v/255*C)/Math.log(1+C)
      : -255*(Math.exp(v/255*Math.log(1-C))-1)/C;
    

    대비



    어두운 곳을 더 어둡고 밝은 곳을 밝게 → S자 곡선

    기본적으로 시그모이드로 좋다.
    (자세한 내용은 시그모이드 함수로 대비 강조 참조)

    그렇지만 정의 영역이 유계가 아니기 때문에 조금 수정해도 좋다
    (자세한 토론은 Sigmoid 곡선의 정의 영역과 값 영역을 [0,1]로 설정하고 싶습니다. 참조)

    pseudoSigmoid.js
    const pseudoSigmoid (x, t, MAX) => // Maxは255とか
        t === 0 ? x
      : t > 0 ? (Math.asinh((2 * x / MAX - 1) * Math.sinh(t)) / 2 / t + 0.5) * MAX
      : (Math.sinh(t * (2 * x / MAX - 1)) / 2 / Math.sinh(t) + 0.5) * MAX;
    

    중심 값을 괴롭히고 싶다면 시그모이드 함수로 대비 강조 구현이 좋을 것 같습니다.

    요약


  • 톤 커브는 LUT를 사용하여 구현합니다
  • 나중에 다른 함수를 사용하기 때문에이 함수를 기억하십시오
  • 좋은 웹페이지 즐겨찾기