png 이미지를 gif로 변환하고 싶습니다. 이를 위해 나는 HTML 캔버스로 다시 그려서 png 이미지의 각 픽셀 데이터를 읽습니다. 그런 다음 해당 png 이미지 데이터에서 알파 채널을 제거했습니다. 마지막으로 픽셀 배열을 256 색 팔레트로 양자화했습니다. 이제 gif 이미지를 만들려면 각 픽셀을 팔레트에서 가장 가까운 색으로 매핑해야합니다. 필자는 픽셀과 팔레트의 각 색상 사이의 유클리드 거리를 비교했습니다. 이것은 극단적으로 오랜 시간이 걸릴뿐만 아니라 나는 매우 열등한 품질의 gif를 얻고 있습니다. 이미지의 각 픽셀을 gif 팔레트에 매핑하는 최적의 방법은 무엇입니까?각 픽셀의 rgb 값을 미리 정의 된 팔레트와 매핑하는 방법은 무엇입니까?
0
A
답변
0
RGB 공간 대신 HSV 색상 공간을 사용해보십시오. 이 질문에 밖으로
확인 :
Calculate distance between colors in HSV space
A "거리"HSV-공간은 "거리"우리의 눈 조치가 색을 비교할 때 무엇을 잘 나타냅니다. 색상의 색조, 채도 및 값 부분에 다른 가중치를 적용하여 시도해 볼 수 있습니다. 우리의 눈에는 밝기/어둡게 인식 할 수있는 수용체가 색상 인식과 마찬가지로 20 배 많으므로 Value 부분에 약간 높은 무게를 지정하십시오.
성능 부분 : 각 픽셀이 다른 모든 픽셀과 독립적이므로 색 상사 연산을 병렬로 실행할 수 있습니다.
마지막으로 : 256 색이 매우 낮으므로 멋진 이미지 품질을 기대하지 마십시오. 16.700.000 색을 256 색으로 줄이고 있습니다.
나는 HSL HSV보다 나은 L * a * b * 색상 공간을 시도했지만 좋은 결과를 내지 못했습니다. – gnikesh