Сравните два массива и верните их остаток

Я делаю сравнение изображений в учебных целях.

Я уже почти все сделал и сейчас улучшаю его. Чтобы проверить на сходство, у меня есть 2 зубчатых многомерных массива (byte[][,]) где я получаю доступ к каждому элементу каждого массива, используя цикл for triple и сохраняю их остаток, например:

for (int dimension = 0; dimension < 8; dimension++)
{
    Parallel.For(0, 16, mycolumn =>
    {
        Parallel.For(0, 16, myrow =>
        {
            Diffs[dimension][mycolumn, myrow] =
                (byte)Math.Abs(Image1Bytes[dimension][mycolumn, myrow]
                - Image2Bytes[dimension][mycolumn, myrow]);
        });
    });
}

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

Как я могу сравнить все массивы в каждом массиве (как array1[i][,] == array2[j][,])?

Я думаю, что есть лучшие способы сделать эти операции, но мне удалось сделать их довольно быстро.

2 ответа

Решение

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

Сравнить растровые изображения

Поскольку Array поддерживает IStructuralEquatable Интерфейс, вы можете использовать структурное сравнение:

using System.Collections;

. . .

var areEqual = StructuralComparisons.StructuralEqualityComparer.Equals(array1[i], array2[j]);
Другие вопросы по тегам