Определите различия между двумя почти идентичными фотографиями

Вы можете просто использовать оператор -replace в PowerShell и шаблон просмотра в будущее. Посмотрите на этот скрипт ниже

Set-StrictMode -Version "2.0"
$ErrorActionPreference="Stop"
cls
$ip1 = "192.168.13.123"
$tests=@("192.168.13.123" , "192.168.13.1" , "192.168.13.12")
foreach($test in $tests)
{
    $patternRegex="\d{1,3}(?=\.\d{1,3}$)"
    $newOctet="420"
    $ipNew=$test -replace $patternRegex,$newOctet
    $msg="OLD ip={0} NEW ip={1}" -f $test,$ipNew
    Write-Host $msg

}

. В результате получится следующее:

OLD ip=192.168.13.123 NEW ip=192.168.420.123
OLD ip=192.168.13.1 NEW ip=192.168.420.1
OLD ip=192.168.13.12 NEW ip=192.168.420.12

Как использовать оператор -replace?

[ 112] https://powershell.org/2013/08/regular-expressions-are-a-replaces-best-friend/

Понимание шаблона, который я использовал

(? =) В \ d {1,3} (? =. \ D {1,3} $) означает «оглянуться назад».

(? =. \ D {1,3} $ in \ d {1,3} (? =. \ D {1,3} $) означает что-либо позади DOT и 1-3 цифры .

Начальная буква \ d {1,3} - это инструкция для точного совпадения 1-3 цифр

Все в простом английском языке " Дайте мне 1-3 цифры позади точка и 1-3 цифры расположены к правой стороне строки "

Регулярное выражение с нетерпением

https: // docs. microsoft.com/en-us/dotnet/standard/base-types/regular-expression-language-quick-reference

ИСПРАВЛЕНИЕ

Шаблон регулярного выражения это взгляд в будущее , а не взгляд в прошлое .

6
задан S.L. Barth - Reinstate Monica 23 July 2012 в 07:39
поделиться

7 ответов

Посмотрите статью Андрея Кириллова на CodeProject. Он написал приложение на C #, используя библиотеку компьютерного зрения AForge.NET для обнаружения движения. На веб-сайте AForge.NET есть обсуждение двух кадровых различий для обнаружения движения.

1
ответ дан 8 December 2019 в 18:41
поделиться

Я написал это бесплатное приложение .NET, используя инструментарий моей компании (DotImage). У него очень простой алгоритм, но код с открытым исходным кодом, если вы хотите поиграть с ним - вы можете адаптировать алгоритм к классам .NET Image, если вы не хотите покупать копию DotImage.

http: //www.atalasoft.com/cs/blogs/31appsin31days/archive/2008/05/13/image-difference-utility.aspx

2
ответ дан 8 December 2019 в 18:41
поделиться

Это во многом зависит от формата изображения и степени сжатия. Но, в конце концов, вы, вероятно, берете два растра и сравниваете их пиксель за пикселем.

Взгляните на Утилиту Perceptual Image Difference .

5
ответ дан 8 December 2019 в 18:41
поделиться

Самый очевидный способ увидеть каждую крошечную, обычно почти незаметную разницу - это выполнить операцию XOR для данных пикселей. Однако, если освещение даже немного отличается, это может быть слишком много. Различие (вычитание) данных пикселей может оказаться более важным, в зависимости от того, насколько незначительны различия.

2
ответ дан 8 December 2019 в 18:41
поделиться

Можно начать с богатой библиотеки обработки изображений, такой как IM . Вы можете взаимодействовать с его операторами в интерактивном режиме с помощью инструмента IMlab , вызывать его прямо из C или C ++ или использовать его действительно приличную привязку Lua для управления им из Lua. Он поддерживает широкий спектр операций с растровыми изображениями, а также расширяемую библиотеку форматов файлов.

Даже если вы ничего не перемещали намеренно, вы можете использовать такой алгоритм, как SIFT , чтобы получить хорошее выравнивание субпикселей между кадрами. Если только вы не хотите, чтобы рассматривал камеру как фиксированную и также обнаруживал движение дивана.

2
ответ дан 8 December 2019 в 18:41
поделиться

Это интересный вопрос. Я не могу направить вас к каким-либо конкретным библиотекам, но процесс, о котором вы спрашиваете, в основном является минимальным случаем компенсации движения. Таким образом видео MPEG (MP4, DIVX, что угодно) очень хорошо сжимает видео; вы можете посмотреть в MPEG некоторую информацию о том, как реализованы эти алгоритмы компенсации движения.

Еще одна вещь, о которой следует помнить; Сжатие JPEG - это блочное сжатие; Большая часть преимуществ, которые дает MPEG, заключается в том, чтобы на самом деле проводить сравнение блоков. Если большая часть вашего изображения (скажем, фон) одинакова от одного изображения к другому, эти блоки останутся неизменными. Это быстрый способ уменьшить объем данных, необходимых для сравнения.

1
ответ дан 8 December 2019 в 18:41
поделиться

просто используйте классы визуализации .net, создайте новое растровое изображение () x 2 и посмотрите на R & G & B значений каждого пикселя, вы также можете посмотреть значения A (Alpha / прозрачность), если хотите, при определении разницы.

также примечание, использование метода getPixel (y, x) может быть очень медленным, есть еще один способ получить все изображение (менее элегантно) и для каждого прохождения через него самостоятельно, если я помню, что он назывался getBitmap или что-то подобное, посмотрите классы изображений / растровых изображений и прочитайте некоторые статьи, они действительно все, что вам нужно и неt это сложно использовать, не обращайтесь к третьим лицам без необходимости.

0
ответ дан 8 December 2019 в 18:41
поделиться
Другие вопросы по тегам:

Похожие вопросы: