Разница между двумя изображениями на основе сравнения пикселей - PullRequest
2 голосов
/ 05 января 2010

Как найти разницу между двумя изображениями на основе разницы пикселей?

Ответы [ 5 ]

5 голосов
/ 05 января 2010

Существует множество методов, от нескольких строк кода до большого проекта.

Вы можете попробовать:

  1. Разница на уровне пикселей, т.е. image matrix A - image matrix B

  2. Разница цветовой гистограммы. Вы также можете разделить изображения на несколько небольших окон и агрегировать разность гистограмм в каждом окне.

  3. Точные функции, такие как Gist, Sift и т. Д. Это современный / исследовательский подход.

0 голосов
/ 23 ноября 2016

Открыть Visual Studio. => Новый проект

Выберите Visual C # => Консольное приложение

Инструменты => Диспетчер пакетов Nuget. => Менеджер пакетов Nuget для решения

Найдите EmguCV в разделе Обзор и установите.

Под Program.cs

using Emgu.CV;
using Emgu.CV.Structure;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace diffOfImages
{
    class Program
    {
        static void Main(string[] args)
        {
            Image<Bgr, byte> img1 = new Image<Bgr, byte>(@"d:\temp\temp1.jpg");
            Image<Bgr, byte> img2 = new Image<Bgr, byte>(@"d:\temp\temp2.jpg");
            var theDiff = img1.AbsDiff(img2);
            theDiff.Save(@"d:\temp\theDiff.jpg");
        }
    }
}

Нажмите F5

или

см. https://www.raymond.cc/blog/how-to-compare-the-difference-between-two-identical-looking-images/

0 голосов
/ 27 октября 2012

Не существует какого-либо конкретного метода для сравнения пикселей, но я постараюсь вам помочь ....

note-> http://php.net/manual/en/book.image.php содержит все необходимые функции, касающиеся обработки изображений, я должен сказать, что они представляют очень аккуратно и красиво.

// Setup the true color and palette images
$im1 = imagecreatefrompng('orginal_image.png');
$im2 = imagecreate(imagesx($im1), imagesy($im1));

// Add some colors to $im2
$colors   = Array();
$colors[] = imagecolorallocate($im2, 255, 36, 74);
$colors[] = imagecolorallocate($im2, 40, 0, 240);
$colors[] = imagecolorallocate($im2, 82, 100, 255);
$colors[] = imagecolorallocate($im2, 84, 63, 44);

// Match these colors with the true color image
imagecolormatch($im1, $im2);

// Free from memory
imagedestroy($im1);
imagedestroy($im2);
0 голосов
/ 17 декабря 2011

Вы можете использовать compare инструмент, который является частью ImageMagick.

compare -metric MSE image1.png image2.png difference.png

Он будет выделять различия в третьем файле, а также выводит числовую оценку разницы.

Если выВы заинтересованы в поиске различий между изображениями, которые ближе к человеческому восприятию, а затем ищите инструменты SSIM / DSSIM.

0 голосов
/ 09 января 2010

Вы можете реализовать фильтр Собеля

Вы можете довольно быстро реализовать такие фильтры в C #, используя AForge framework

...