2017-03-20 9 views
0

파이썬에서 두 이미지 사이의 픽셀 차이를 계산하는 가장 좋은 방법이나 정확한 방법은 무엇입니까?이미지 비교 | 픽셀 차이

나는 키 프레임을 추출하기 위해 교육 비디오를 가지고 있는데, 프레임 간의 픽셀 비교를 연속적으로 수행해야합니다.

나는 프레임 간의 모든 픽셀 차이의 평균을 취할 수 있었는지, 그 값이 평균값보다 높은 프레임을 저장할 수 있는지 궁금합니다.

이것을 달성 할 수있는 기능이 있습니까? 새로운 제안

답변

0

Image comparison - fast algorithm

이 프레임이 중복 또는 서로 매우 유사 여부를 확인하는 방법을 보여줍니다 환영합니다. 반대로 그것은 또한 그들이 매우 다르다면 알려주지 만, 이것은 당신이 찾고자하는 것으로 보인다.

편집 : 키 프레임은 이전 프레임과 크게 다를 것이다 알고 있다면 당신은 여기에 설명 된 방법을 식별 할 수 있습니다 : http://www.pyimagesearch.com/2014/09/15/python-compare-two-images/

from skimage.measure import structural_similarity as ssim 
s = ssim(imageA, imageB) 

당신은 이것을 실행으로 테스트합니다 수 ssim 값에 대한 임계 값을 찾고 일단 임계 값을 초과하면 키 프레임으로 처리하십시오. (이미지가 더 비슷할수록 s의 값이 1에 가까워짐)

또 다른 방법은 평균값을 제외하고 픽셀 차이의 평균을 갖는 아이디어와 매우 유사한 기사에서도 설명됩니다 square diff

import numpy as np 
err = np.sum((imageA.astype("float") - imageB.astype("float")) ** 2) 
err /= float(imageA.shape[0] * imageA.shape[1]) 
+0

안녕하세요,이 기사에 실제 코드 예제를 추가하고 사용할 방법과 OP에 얼마나 도움이되는지 명확하게 설명해 주시면 더 유용 할 것입니다. 감사합니다. –

+1

실제 코드의 측면에서 여기에 repo가 ​​있습니다. https://github.com/eivindbergem/find-keyframes 문자 그대로 MPEG TS 파일에서 키 프레임을 반환합니다. 그걸 살펴볼 수는 있지만 코드를 읽는 중에는 키 프레임에 대한 MPEG 특정 레이블을 확인하고 실제로 프레임을 비교할 필요가 없으므로 프레임을 더 빠르게 찾을뿐만 아니라 프레임이 크게 달라졌을 수도 있기 때문에 더 신뢰할 만하지만 둘 다 반드시 키 프레임이어야합니다. 코스 영업 이익 않는 한 *이 * 성공하면서 –

+0

픽셀 비교를 수행하는 : 성공, currentFrame = vidcap.read() isDuplicate = 거짓 제한 = 계산하면 계산 <= 다른 10 (수 - 10) 을 xrange에서 IMG에 대한 (한계 카운트) previusFrame = cv2.imread ("% sframe- % d.png"% (outputDir, IMG)) 보십시오 차이 = cv2.subtract (currentFrame, previusFrame) # 제외 : 을 패스 isDuplicate = not np.any (차이) # 차이가 모두 0이면 거짓을 반환합니다. 이것은 지금 사용하고있는 코드이지만, 많은 프레임을 생성합니다. – ashti