有两个公式我在MATLAB中很难表示。假设有两个相同大小的RGB图像
但是这不会产生任何错误。然而,这不是正确的表示方法,因为if条件没有被纳入。问题在于如何通过检查A == B或A != B来结合条件。
2. 公式2为
3. 公式3为
A
和B
,其中m
,n
表示行和列,第三维d=3。Formula1
基本上计算像素的变化率,如果A
是原始图像,B
是扭曲版本。Formula2
计算像素的平均变化率。
1.
Formula1= { sum(C(m,n,d)) / (m * n)} * 100
where `C(m,n) = 0`, if `A(m,n) = B(m,n)`
`=1`, if `A(m,n) != B(m,n)`
对所有行和列进行求和,包括第三维。
我尝试了类似于这样的方法:
Formula1 = sum(sum(abs(double(A)-double(B))./(m*n), 1), 2);
但是这不会产生任何错误。然而,这不是正确的表示方法,因为if条件没有被纳入。问题在于如何通过检查A == B或A != B来结合条件。
2. 公式2为
{ 1/ (m*n)} * sum { norm (A - B) / 255} * 100
。同样,在所有维度上进行求和。我不知道如何形成矩阵的范数。3. 公式3为
{ 1/ (m*n)} * sum {(A - B) / 255} * 100
。我尝试了以下方法:
C = double(sum(A-B,3)); r = reshape(100*(C/255)/(m*n),[1 3])
但出现了一个错误,说维度应该相同,而且reshape无法工作。
r = Formula...
这一行,并将它们直接复制到您的脚本或提示符中。对于您的第二个问题,是的,结果将在r
中。有关函数文件的详细信息,请参见http://www.mathworks.com/help/techdoc/ref/function.html。 - mtrwsqueeze(sum(sum(C)))
。最内层的求和操作跨越列以生成一个(1,n,d)
矩阵,接下来的求和操作跨越生成的行以生成一个(1,1,d)
矩阵,而squeeze
则消除了前导单例维度。请参见http://www.mathworks.com/help/techdoc/ref/squeeze.html。 - mtrw