[image] ImageMagick을 사용하여 이미지“Diff”

두 이미지의 차이점을 어떻게 알 수 있습니까? 원본 이미지가 있습니다. 누군가 원본 이미지와 정확히 동일한 사본을 작성했습니다. 이제 원본과 필기체 이미지를 비교하고 이미지 형식의 필기체 만 추출해야합니다.

예 : 집 사진이 있습니다. 누군가가 사본을 가지고“안녕하세요!”라고 썼습니다. 사본에. 나는 어떻게 든 두 그림을 비교하고 집을 제거하고“Hello!”라는 단어의 이미지를 남기고 싶습니다.

ImageMagick으로 가능합니까? 이미지 간의 통계적 차이를 얻는 방법이 있지만 이것이 내가 원하는 것이 아닙니다.



답변

내가 가장 좋아하는 것은 다음 두 가지입니다.

 compare image1 image2 -compose src diff.png
 compare image1 image2 -compose src diff.pdf

위의 두 명령의 유일한 차이점은 첫 번째 이미지는 두 이미지의 시각적 차이를 PNG 파일로, 두 번째 이미지는 PDF로 보여줍니다.

결과 diff 파일은 붉은 색이 다른 모든 픽셀을 표시합니다. 변경되지 않은 것은 흰색으로 나타납니다.

짧고 달다.

이미지 는 동일한 유형일 필요는 없습니다 . 한 가지 조건에서 JPEG, TIFF, PNG를 혼합 할 수도 있습니다. 이미지의 크기는 동일해야합니다 (이미지 크기는 픽셀). 출력 형식은 출력 파일 이름의 확장자에 따라 결정됩니다.

어떤 이유로 든 기본 해상도 (72dpi)보다 높은 해상도가 필요한 경우 적절한 -density매개 변수를 추가하십시오 .

 compare -density 300 image1 image2 -compose src diff.jpeg

예시 된 예

다음은 위 명령의 변형 결과에 대한 몇 가지 그림입니다. 참고 : 비교 된 두 파일은 PDF 파일 이었으므로 1 페이저 인 경우에도 작동합니다!


왼쪽 : 텍스트가있는 이미지       중앙 : 원본 이미지       오른쪽 : 빨간색 픽셀의 차이 (= 텍스트).
적색 차이 픽셀 만;  동일한 픽셀은 흰색입니다

compare \
        porsche-with-scratch.pdf  porsche-original.pdf \
       -compose src \
        diff-compose-default.pdf

이것은 위에서 제안한 것과 같은 명령입니다.


왼쪽 : 텍스트가있는 이미지       중앙 : 원본 이미지       오른쪽 : ‘해초’픽셀의 차이.
해초 차이 픽셀 만;  동일한 픽셀은 흰색입니다

compare \
        porsche-with-scratch.pdf  porsche-original.pdf \
       -compose src \
       -highlight-color seagreen \
        diff-compose-default.pdf

이 명령은 기본 빨강 대신 차분 픽셀을 ‘seagreen’으로 만드는 매개 변수를 추가합니다.


왼쪽 : 텍스트가있는 이미지       중앙 : 원본 이미지       오른쪽 : 파란색 차이 (단, 컨텍스트 배경 포함)
청색 차이 픽셀 만;  밝은 배경으로 비교 된 이미지 중 첫 번째l

compare \
        porsche-with-scratch.pdf  porsche-original.pdf \
       -highlight-color blue \
        diff-compose-default.pdf

이 명령은 -compose src부분을 제거합니다 . 결과는 기본 동작으로 compare두 개의 다른 이미지 중 첫 번째 배경을 밝은 배경으로 유지합니다. (이번에는 diff 픽셀이 파란색으로 표시되도록 매개 변수가 추가되었습니다.)


답변

compare많은 응용 프로그램에서 잘 작동 하지만 특히 회색조 이미지를 비교할 때 때로는 다른 접근법을 선호한다는 것을 알았습니다.

convert '(' file1.png -flatten -grayscale Rec709Luminance ')' \
        '(' file2.png -flatten -grayscale Rec709Luminance ')' \
        '(' -clone 0-1 -compose darken -composite ')' \
        -channel RGB -combine diff.png

아이디어는 다음과 같습니다. 둘 다 file1.pngfile2.png회색조 로 변환합니다 . 그런 다음 첫 번째를 결과 이미지의 빨간색 채널로, 두 번째를 녹색 채널로 트래 트하십시오. 파란색 채널은 darken작성 연산자를 사용 하여이 두 가지로 구성되며, 기본적으로 최소값을 사용합니다.

따라서 두 이미지에서 모두 흰색이 흰색으로 유지됩니다. 두 이미지에서 모두 검은 색은 검은 색으로 유지됩니다. 첫 번째 이미지에서 흰색이지만 두 번째 이미지에서 검은 색은 빨간색으로 바뀌고 두 번째 이미지에서 흰색은 첫 번째 이미지에서 검은 색은 녹색으로 바뀝니다.

결과는 녹색을 첫 번째 입력에, 빨간색을 두 번째 입력에 쉽게 연결할 수있는 멋진 색상 코드 이미지입니다. 다음은 LaTeX의 출력과 KaTeX 의 출력을 비교하기 위해이를 사용하는 예입니다 ( 이를 개선하기 위해 버그수정 하기 전에 ).

여기에 이미지 설명을 입력하십시오

당신이 사용하는 접근 방식을 결합 할 수 있습니다 compare위치를 더 자세히보기 위해 위의 사용 후 뭔가 변경과 방법 이 변경되었습니다.


답변