내 내부 루프에는 프로파일 링에 문제가있는 것으로 계산 된 내용이 포함되어 있습니다.
그레이 스케일 픽셀 x (0<= x<= 1)를 가져 와서 "대비도를 높이는"아이디어가 있습니다. 다음과 같은 요구 사항이 상당히 느슨합니다.
- x<.5, 0<= f (x)
- x>.5, x
- f (0) = 0
- f (x) = 1-f (1-x), 즉 "대칭"이어야합니다
- 바람직하게는 기능이 원활해야합니다.
- x>.5, x
그래프는 다음과 같아야합니다 :
.
두 가지 구현이 있습니다 (결과는 다르지만 둘 다 일치합니다) :
float cosContrastize(float i) {
return .5 - cos(x * pi) / 2;
}
float mulContrastize(float i) {
if (i < .5) return i * i * 2;
i = 1 - i;
return 1 - i * i * 2;
}
이러한 구현 중 하나에 대한 미세 최적화 또는 독자적인보다 빠른 독창적 인 공식을 요청합니다.
어쩌면 여러분 중 한 명이 비트를 돌리기도합니다.)
- 답변 # 1
- 답변 # 2
다음시그 모이 드모양의 기능 (원하는 범위로 올바르게 번역됨)을 고려하십시오.
오류 기능
일반 CDF
탄
로깅
MATLAB을 사용하여 위 그림을 생성했습니다. 관심이 있다면 여기 코드가 있습니다 :x = -3:.01:3; plot( x, 2*(x>=0)-1, ... x, erf(x), ... x, tanh(x), ... x, 2*normcdf(x)-1, ... x, 2*(1 ./ (1 + exp(-x)))-1, ... x, 2*((x-min(x))./range(x))-1 ) legend({'hard' 'erf' 'tanh' 'normcdf' 'logit' 'linear'})
- 답변 # 3
개별 보간은 빠르고 유연 할 수 있습니다. 곱셈과 덧셈이 뒤 따르는 몇 가지 결정 만 필요하며 모든 곡선에 근접 할 수 있습니다. 또한 조회 테이블에 의해 도입 될 수있는 진로를 피할 수 있습니다 (또는이 조회를 부드럽게하기 위해 보간이 뒤 따르는 두 조회의 추가 비용). 그러나 lut는 귀하의 경우에 완벽하게 작동 할 수 있습니다.
몇 개의 세그먼트 만 있으면 꽤 잘 어울릴 수 있습니다. 여기에는 색상그라데이션의 코스가 있으며, 절대 색상의 코스보다 감지하기가 훨씬 어렵습니다.
Eamon Nerbonne이 의견에서 지적했듯이 "세분화를 극대화하기 위해 2 차 도함수와 같은 것을 기반으로 세분화 지점을 선택하여"즉, 경사가 가장 많이 변하는 방식으로 세분화를 최적화 할 수 있습니다. 분명히, 내가 게시 한 예에서, 5 개의 세그먼트 케이스 중간에 3 개의 세그먼트가 있다고해서 더 많은 세부 사항이 추가되지는 않습니다.
- algorithm : 방향 그래프에서 간선이 주어지면 각 간선이 하나의 노드에 할당되면 할당될 간선의 최대 수는 몇 개입니까?
- javascript : 처음에 명시되지 않은 경우 특정 금액을 결정하는 공식이 있습니까?
- python : 하위 목록이 있는 목록에서 상위 3개 제품 찾기
- C++ 어셈블리는 9자리 숫자를 int로 변환하는 가장 미친듯이 빠른 방법입니다.
- java : 트리의 곱셈 쿼리
- 다음 c++ code의 시간 복잡성을 줄이는 방법은 무엇입니까?
- algorithm : 영숫자 code의 수식을 찾습니다
- c++ : 벡터 문제를 해결할 때 치명적인 신호 11을 잡았습니다
- image : 여러 이미지의 평균값을위한 수학 표기법
- algorithm : 수식, 원의 주변은 직사각형 모서리와 교차합니다.
당연히 당신은 단순히 임계 값을 내릴 수는 있지만 이것이 너무 멍청하다고 생각합니다.
'증가 대비'를 언급 한 이후 입력 값이 휘도 값이라고 가정합니다. 그렇다면 불 연속적이며 (아마 8 비트 값일 수 있음) 조회 테이블을 사용하여이 작업을 매우 빠르게 수행 할 수 있습니다.
'mulContrastize'는 상당히 빠르다. 하나의 최적화는 정수 수학을 사용하는 것입니다. 다시 말해, 입력 값은 실제로 [0..255]에서 8 비트 부호없는 값으로 전달 될 수 있습니다. (또 좋은 가정일까요?) 대략 다음과 같은 일을 할 수 있습니다 ...