2011-03-03 8 views
1

현재 이미지의 각 픽셀에 대해 rgb 값을 얻을 Java 프로그램이 있습니다. 또한 값의 2 차원 행렬에 Haar 웨이브 렛을 계산하는 방법이 있습니다. 그러나 Haar 웨이브 렛을 계산하는 메서드에 어떤 값을 지정해야할지 모르겠습니다. 나는 각 픽셀 rgb 값을 평균해야하고 그 컴퓨터에 haar wavelet을 넣어야합니까? 아니면 그냥 r, g, b 중 하나를 사용하십시오. 이미지의 고유 한 지문을 만들려고합니다. 나는 다른 곳에서이 이미지가 서로 얼마나 비슷한지를 알기 위해 2 웨이블릿의 내적을 취할 수있는 좋은 방법이라고 읽었습니다.haar wavelet을 생성하기 위해 사용해야하는 이미지의 값은 무엇입니까?

Haar 웨이블릿을 계산할 때 필요한 값을 알려주십시오. Thanks Jess

답변

2

R/G/B 구성 요소를 서로 다른 이미지로 간주해야합니다. R, G 및 B 각각에 대해 하나의 행렬을 만든 다음 각각의 부분에 웨이브 렛을 적용합니다.

그런 다음 3 개의 웨이블릿 압축 채널에서 R/G/B- 이미지를 재구성 한 다음 마지막으로 3 채널 비트 맵과 결합합니다.

0

eznme 귀하의 질문에 (당신은, 지문을 원하는 그는 압축 및 복원을 설명합니다), 여기에 자주 건너 것이다 방법의 대답하지 않았다 때문에 :

당신은 색상과 밝기 정보 (색차 및 휘도)를 분리

, 다르게 무게를 잰다. 때로는 색차차를 버리고 루마 부분 만 사용하기도합니다. 이렇게하면 지문의 크기가 상당히 줄어들며 (~ 3 단계) 이미지를 인식하는 방법을 고려합니다. 주로 절대적인 색이 아닌 로컬 밝기입니다. 보너스로 이미지의 색상 조작에 대한 견고 함을 얻을 수 있습니다.

분리는 다른 방식으로, 예를 들어. RGB 이미지를 YUV 또는 YIQ 색 공간으로 변환합니다. luma 컴포넌트 만 유지하려는 경우이 두 색상 공간은 동일합니다. 그러나, 그들은 색차를 다르게 인코딩합니다. 다음은 RGB의 휘도 Y에 대한 선형 변환이다 : Y = 0.299 * R + 0.587 * G + 0.114 * B

, 우리가 만드는 것보다 다른 아무것도하지 않고 있다는 것을 알 당신이 수학을 살펴 우리 모두가 수치 적으로 같을 때 푸른 색보다 붉은 색과 붉은 색보다 밝은 녹색을 더 잘 인식한다는 것을 고려한 그레이 스케일 이미지.

약간의 색차 정보를 유지하려는 경우 지문을 최대한 간결하게 유지하려면 두 개의 U, V 구성 요소 (각각 실제로 8 비트)의 해상도를 줄일 수 있습니다. 따라서 정보를 4 비트로 줄이고 Shift 연산자와 결합하여 하나의 8 비트 값으로 결합 할 수 있습니다 (Java에서 작동하는 방식을 모름). 색차는 luma와 비교하여 최종 지문 - 거리 계산 (언급 한 점 제품)에 비해 덜 중요합니다.