Сравните два массива и верните их остаток
Я делаю сравнение изображений в учебных целях.
Я уже почти все сделал и сейчас улучшаю его. Чтобы проверить на сходство, у меня есть 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]);