C++ 图像旋转单元测试
我有一个关于一些图像处理算法的单元测试的问题。以图像旋转为例,为了执行图像旋转,通常需要两个参数:一个是旋转角度,另一个是重采样方法,执行图像旋转的函数具有以下特征:C++ 图像旋转单元测试,c++,image,matlab,unit-testing,rotation,C++,Image,Matlab,Unit Testing,Rotation,我有一个关于一些图像处理算法的单元测试的问题。以图像旋转为例,为了执行图像旋转,通常需要两个参数:一个是旋转角度,另一个是重采样方法,执行图像旋转的函数具有以下特征: void rotate_image(const Image &image, const double rotationAngle, const int rotationMethod, Image &rotatedImage); 那么,我们如何设计一个好的单元测试框架来测试这个功能呢?目前,我能找到的唯一解决方案是
void rotate_image(const Image &image, const double rotationAngle, const int rotationMethod, Image &rotatedImage);
那么,我们如何设计一个好的单元测试框架来测试这个功能呢?目前,我能找到的唯一解决方案是:首先使用其他最先进的软件包(例如,MATLAB图像处理工具箱)获得地面真值图像(即具有指示旋转角度和重新采样方法的旋转图像);之后,获得使用所实现的函数的旋转图像;最后,比较两幅图像。如果差分图像的绝对和小于阈值,则函数通过单元测试。我想知道是否有其他解决办法来解决这个问题。谢谢 我想到了一些测试用例:
显然,在所有情况下都会有小的精度错误,您必须定义一个公差。如果结果是完全确定的,您可以生成旋转的图像,直观地验证它(在查看器中打开并验证它是否确实旋转),将其序列化为一个文件,然后在单元测试中,调用函数并与存储的图像进行比较(参考)结果。对于单元测试,您可以创建自己的(简单)图像,其中可以手动计算预期结果。