-
[Image] #1. 유사도측정 - Hashing개발일지 2021. 11. 1. 16:34728x90
openAL 은 256의 문제를 해결하고 작업을 재개할 수 있을 듯 하고,
그 전에는 다른 작업을 진행하는게 좋겠다고 판단하였다.
먼저 이미지 유사도를 측정하려고 한다.
유사도를 측정하는 방법에는 여러가지가 있는데 그 중 Hashing을 사용하여 빠르게 비교하기로 하였다.
Hashing에도 다양한 방법이 있는데
aHash (average hash), dHash (difference hash), pHash (perceptual hash) 를 구현하고 사용해보기로 하였다.
아래는 참고한 사이트다.
https://content-blockchain.org/research/testing-different-image-hash-functions/
Testing different image hash functions – Content Blockchain
Similar to the average hash algorithm, the difference hash algorithm initially generates a grayscale image from the input image, which in our case is then scaled down to 9×8 pixels. From each row, the first 8 pixels are examined serially from left to righ
content-blockchain.org
Average Hash
aHash는 이미지를 그레이스케일과 8x8(64bit)로 변환 후,
해당 픽셀이 모든 픽셀의 평균값보다 높으면 1, 낮으면 0으로 변환시키는 방법이다.

원본이미지(gray scale), 8x8 이미지, aHash 적용 Difference Hash
dHash역시 이미지를 그레이스케일로 바꾼다.
pixel size는 8x9 로 변환을 한다.
그리고 픽셀을 훑으며 해당 픽셀이 오른쪽픽셀보다 밝으면 0, 어두우면 1로 또는 반대로 변환시킨다.
결과는 다시 64bit로 나오게 된다.

원본이미지(gray scale), 8x9 이미지, dHash 적용 Perceptual Hash
pHash 도 이미지를 그레이스케일로 바꾼뒤,
pixel size는 32x32로 변환해준다.
그 후, DCT (Discrete Cosine Transform) 를 행별로 적용을 시켜주고,
열별로 적용을 시켜준다.
(원래 이미지에서 DCT를 적용할때는 8x8 배열로 나누어 적용시켜준뒤 q-table을 적용하고... 등의 과정이 있지만 내가 참고한 사이트에서는 가로로 한번, 세로로 한번 적용 되었다.)
마지막으로 좌측 8x8만 따로 떼어내어 median 을 구해 그 보다 크면 1 작으면 0으로 나타낸다.

원본이미지(gray scale), dct 적용, pHash 적용 '개발일지' 카테고리의 다른 글
[Developing record] Buy a RTX3090. (0) 2022.02.08 [openAL] #11. 숫자 맞히기 (0) 2021.11.26 [openAL] #10. 여러 소리 재생시켜보기 - 2 (0) 2021.10.26 [openAL] #9. 여러 소리 재생시켜보기 (0) 2021.10.25 [openAL] #8. 방향키로 소리 움직이게 하기 (0) 2021.10.21