2009-04-15 6 views
3

데이터베이스의 이미지와 비교하는 가장 좋은 방법은 무엇입니까? 난 (@image가 입력 이미지이다)들을 비교하는 시도 :SQL의 이미지 비교

Select * from Photos 
where [Photo] = @Image 

를 있지만 오류 '데이터 유형 이미지 및 이미지가 운전자에게 동등의 양립 "을 수신한다.

답변

9

이미지 데이터 형식이 바이너리이며 IMO 데이터 저장 공간이 크기 때문에 이미지 필드를 비교하는 가장 쉬운 방법은 해시 비교입니다. 그래서 사진 열의 해시를 테이블에 저장해야합니다.

1

이미지를 비교해야하는 경우 데이터베이스의 모든 이미지를 검색하고 데이터베이스에 액세스하는 데 사용하는 언어로 이미지를 검색해야합니다. 이것이 관계형 데이터베이스에 이미지 나 다른 바이너리 파일을 저장하는 것이 좋지 않은 이유 중 하나입니다. 데이터베이스에 이미지를 저장할 때마다 고유 한 파일 이름을 만들어야합니다. 이 고유 한 파일 이름으로 파일의 이름을 바꾸고 이미지를 디스크에 저장하고 데이터베이스에 이름을 넣은 다음 파일의 원래 이름이나 응용 프로그램 사용자가 제공 한 이름을 삽입하십시오.

+0

디스크에 저장하면 어떻게 비교할 수 있습니까? 당신은 여전히 ​​그것을 할 도구를 작성해야합니다. –

+0

죄송합니다. 파일을 저장하기 전에 을 잊어 버렸습니다. 체크섬을 생성하여 db에 저장할 수 있습니다. 이 데이터는 파일 비교에 사용될 수 있습니다. 다른 접근법은 너무 느릴 것입니다. –

0

얼마나 정확하고 얼마나 많은 이미지를 비교해야하는지에 따라 다릅니다. DATALENGTH 및 SUBSTRING 또는 READTEXT와 같은 다양한 기능을 사용하여 몇 가지 비교를 수행 할 수 있습니다. 또는 CLR에 코드를 작성하고 비교를 위해 저장 프로 시저를 통해 구현할 수 있습니다.

+0

이미지는 이러한 방식으로 비교 될 수 없습니다. 바이너리 데이터 만이 아닙니다. 그 이상입니다 .. 이미지 처리 –

+0

혹시 이것을 시도한 적이 있습니까? 내 대답 전체를 읽었 니? –

0

이미지 비교는 이미지 처리라고하는 컴퓨터 과학의 특정 범주에 속합니다. 이미지 처리 기능을 제공하는 일부 라이브러리를 검색해야합니다. 이를 사용하여 두 이미지가 동일하거나 동일 할 때 어떤 비율을 비교할 수 있는지를 알 수 있습니다. 50 % 또는 그 이하까지 서로 일치하는 2 개의 이미지를 가질 수 있습니다. 비율을 반환하는 비교 공식을 정의하는 수학적 알고리즘이 있습니다. 이미 언급 된 것 같이이 문제에 더 일을 당신에게 방향을 제공

희망 .. 일반적으로

1

는, 당신은 이미지 처리 선반에서 전용 알고리즘을 사용합니다.

또한 질문이 너무 일반적이어서 정확한 답변을 제시하기가 어렵습니다. 두 이미지는 속성의 수에 따라 다르거 나 그렇지 않은 것으로 간주 될 수 있습니다.

예를 들어 꽃의 이미지를 100x100 픽셀로, 꽃의 이미지를 50x50 픽셀로 조정할 수 있습니다. 일부 목적 및 응용 프로그램의 경우이 두 요소는 (서로 다른 차원에 관계없이) 비슷한 것으로 간주되지만 다른 용도로는 다른 이미지가됩니다.

어떻게 작동하는지 당신은 이미지 비교는 몇 가지 도구에 의해 실현하는 방법을 확인하고 학습 할 수 있습니다

:

당신은 이미지를 비교하지 않으려면 두 개의 이진 스트림 (이미지 파일, 다른 이진 파일, 이미지 내용이있는 이진 객체)이 동일한 지 확인하면 MD5 개의 이미지 체크섬을 비교할 수 있습니다.