Sigmoid 곡선의 정의 영역과 값 영역을 [0,1]로 설정하고 싶습니다.

동기 부여


  • 하나의 파라미터로 이미지의 대비를 왜곡하는 톤 커브를 구현하고 싶었습니다.

  • 이미지의 대비 조정을 위한 히스토그램에 적합한 함수를 찾고 있습니다. 에서는 시그모이드가 추측되고 있지만, 시그모이드는 값역이 $[0,1]$가 아니다
  • $0\rightarrow 0$, $1\rightarrow 1$이었으면 좋겠다

  • PseudoSigmoid의 역사



  • 『시그모이드 곡선의 정의역이 유계가 아니기 때문에, 유계한 시그모이드 곡선을 마음대로 만들어 보았다』 을(를) 발견

  • 『시그모이드 함수로 콘트라스트 강조』 도 발견

  • 「감마 곡선과 시그모이드 곡선에 의한 화상 보정」 하지만 비슷한 일을하고 있습니다

  • 1. 시그모이드를 베이스에 조금 세로로 늘린다



    상기 『시그모이드 함수로 콘트라스트 강조』 이나 「감마 곡선과 시그모이드 곡선에 의한 화상 보정」 에서의 구현
    s(x) = \frac{1}{1+e^{a(b-x)}}\\
    f(x) = \frac{s(x)-s(0)}{s(1)-s(0)}
    

    결과



    htps //w w. 게오게 b 등. rg/m/ydqszvqw


    좋은 곳


  • 부드러운
  • 나이브

  • 나쁜 곳


  • 콘트라스트 낮추는 분에게는 대응할 수 없을 것 같아
  • 라고 생각하면 「감마 곡선과 시그모이드 곡선에 의한 화상 보정」 그럼 할 수 있는 것 같다. 왜. . .

  • 2. PseudoSigmoid



    『시그모이드 곡선의 정의역이 유계가 아니기 때문에, 유계한 시그모이드 곡선을 마음대로 만들어 보았다』 구현
    f(x) = \frac{sinh^{−1}[(2x−1)sinh(t)]}{2t} + \frac{1}{2}
    

    결과



    htps //w w. 게오게 b 등. 오 rg / m / 우 bn fh z


    좋은 곳


  • 예쁜

  • 나쁜 곳


  • 어려운
  • 콘트라스트 낮추는 분에게는 대응할 수 없다

  • 3. 지수 접근



    지수로 구현해 보자.
    $x^t$는 $(0,0)$과 $(1,1)$를 통과하므로, 이것을 2개 뒤집어 연결하면 점대칭 S자 곡선이 생긴다.
    이하 $h$는 변곡점. ($[0,1]$로 하고 싶으면 $h=0.5$)
    f(x) = \left\{
    \begin{array}{ll}
    h \Big( 1 + \big( \frac{x-h}{h} \big)^{2^t} \Big) & (x \geq h) \\
    h \Big( 1 - \big( \frac{h-x}{h} \big)^{2^t} \Big) & (x \lt h)
    \end{array}
    \right.
    

    결과



    htps //w w. 게오게 b 등. rg/m/d4zqtqy

  • 왠지 부끄러운
  • pH 점프 이다 이것

  • 좋은 곳


  • 부의 값을 구현할 수 있다

  • 나쁜 곳


  • 변곡점 근처에 달라 붙는다

  • 여기서 알아차리다


    f(x) = \frac{sinh^{−1}[(2x−1)sinh(t)]}{2t} + \frac{1}{2}
    

    이것, 역함수 낼 수 있는 것은?

    4. 확장 PseudoSigmoid



    $ t $가 음수 일 때 역함수로 마이그레이션하여 대비를 떨어 뜨리는 사람들에게도 대응합니다.
    f(x) = \left\{
    \begin{array}{ll}
    0 & (t = 0)\\
    \frac{sinh^{−1}[(2x−1)sinh(t)]}{2t} + \frac{1}{2} & (t \gt 0) \\
    \frac{sinh[(2x−1)t]}{2sinh(t)} + \frac{1}{2} & (t \lt 0)
    \end{array}
    \right.
    

    결과



    htps //w w. 게오게 b 등. 오 rg/m/fxf 우우 퓨


    구현



    그대로 써 보았다 ($[0,MAX]\rightarrow [0,MAX]$)

    extended_pseudosigmoid.js
    function extended_pseudosigmoid(x, t, MAX){
        if (t === 0) return x;
        else if (t > 0) return (Math.asinh((2 * x / MAX - 1) * Math.sinh(t)) / 2 / t + 0.5) * MAX;
        else return (Math.sinh(t * (2 * x / MAX - 1)) / 2 / Math.sinh(t) + 0.5) * MAX;
    };
    

    결론



    $\star$Sigmoid는 위대한 ––––––!

    좋은 웹페이지 즐겨찾기