Блок поворота изображения

0

У меня есть вопрос, связанный с модульным тестированием некоторых алгоритмов обработки изображений. В качестве примера возьмем поворот изображения, чтобы выполнить поворот изображения, как правило, нам нужны два параметра: один - это угол поворота, а другой - метод повторной выборки, а функция, которая выполняет поворот изображения, имеет следующую подпись:

void rotate_image(const Image &image, const double rotationAngle, const int rotationMethod, Image &rotatedImage);

Затем, как мы можем создать хорошую модульную тестовую среду для тестирования этой функции? В настоящее время единственным решением, которое я могу выяснить, является: сначала получить изображение истины земли (то есть повернутое изображение с обозначением угла поворота и метод повторной выборки), используя другие современные пакеты программного обеспечения (например,, MATLAB Image Processing Toolbox); после чего получается повернутое изображение с использованием реализованной функции; наконец, сравнить два изображения. Если абсолютная сумма разностного изображения меньше порога, то функция проходит единичный тест. Мне было интересно, есть ли другие решения для решения этой проблемы. Благодарю.

  • 0
    Если результат является полностью детерминированным, вы можете сгенерировать повернутое изображение, проверить его визуально (открыть в программе просмотра и убедиться, что оно действительно повернуто), сериализовать его в файл, затем в модульном тесте вызвать функцию и сравнить с сохраненным ( ссылка) результат.
  • 1
    Для модульного тестирования вы можете создать собственное (простое) изображение, где ожидаемый результат может быть вычислен вручную .
Теги:
unit-testing
image
rotation

1 ответ

1

Мне приходят в голову некоторые тестовые примеры:

  1. Создайте круглое изображение с некоторыми данными, все вокруг будет черным. Поверните его и убедитесь, что некоторые параметры, например среднее значение rg и b, не изменяются.
  2. Создайте серию поворотов, которые приводят к полному вращению на 360 °, по сравнению с оригиналом.
  3. Поверните геометрическую фигуру (прямоугольник) и вычислите ожидаемый результат.
  4. Поверните центрированный круг вокруг центра, не ожидайте изменений.
  5. Повернуть на 90 °. Каждый пиксель получает новую позицию, не должно быть проблем с допуском.
  6. Поверните изображение с помощью +90 ° и -270 °. Если у вас небольшая разница, есть некоторые ненужные потери высокой точности.

Очевидно, что во всех случаях у вас будут небольшие ошибки точности, вы должны определить допуски.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню