숫자 연산 시 주의사항
자바에서 이미지 관련 알고리즘(Floyd-Steinberg 디더링)을 구현했는데 결과가 이상하게 나왔습니다.
도무지 원인을 몰라서 한참 삽질을 하다가 이대로는 안 되겠어서 하루자고 머리좀 식힌 후 다시해보니 양자화 오류값을 주위 픽셀에 덧셈할 때 항상 0을 더하더군요..
코드는 다음과 같았습니다.
image[y][x] += 7/16 * 양자화오류값
도대체 왜그러나하고 생각해보니..
7/16이 정수형이라서 결과값이 0이 되었습니다.
7/16 = 0
0 * 양자화오류값 = 0
다음과 같이 고친 후에야 알고리즘이 정상화되었습니다.
image[y][x] += 7f/16 * 양자화오류값
잘못된 것을 깨달을 수 있는 지혜를 주신 하나님께 감사드립니다.
댓글
댓글 쓰기