如何找到图像处理算法的计算复杂度
How to find computation complexity of image processing algorithm
我试图找出算法在像素数量方面的计算复杂度,我需要遵循什么程序。该算法基于图像配准。
粗略的衡量一下,可以看循环次数,或者说每个像素被算法viewed/edited的次数。
例如该算法将图像转换为棕褐色
BufferedImage img = <input of the algorithm>
for(int i=0;i<img.getWidth();i++){
for(int j=0;j<img.getHeight();j++){
Color c = new Color(img.getRGB(i,j));
double r = c.getRed();
double g = c.getGreen();
double b = c.getBlue();
double r2 = 0.39 * r + 0.76 * g + 0.19 * b;
double g2 = 0.34 * r + 0.69 * g + 0.17 * b;
double b2 = 0.27 * r + 0.53 * g + 0.13 * b;
}
}
我可以看到有两个循环,一个遍历图像的宽度,一个遍历图像的高度。
每个像素被该算法访问一次。
它的复杂度是 O(n),n 是输入图像中的像素数。
我试图找出算法在像素数量方面的计算复杂度,我需要遵循什么程序。该算法基于图像配准。
粗略的衡量一下,可以看循环次数,或者说每个像素被算法viewed/edited的次数。
例如该算法将图像转换为棕褐色
BufferedImage img = <input of the algorithm>
for(int i=0;i<img.getWidth();i++){
for(int j=0;j<img.getHeight();j++){
Color c = new Color(img.getRGB(i,j));
double r = c.getRed();
double g = c.getGreen();
double b = c.getBlue();
double r2 = 0.39 * r + 0.76 * g + 0.19 * b;
double g2 = 0.34 * r + 0.69 * g + 0.17 * b;
double b2 = 0.27 * r + 0.53 * g + 0.13 * b;
}
}
我可以看到有两个循环,一个遍历图像的宽度,一个遍历图像的高度。
每个像素被该算法访问一次。 它的复杂度是 O(n),n 是输入图像中的像素数。