如何计算MATLAB中像素的变化率

SKM*_*SKM 3 matlab image-processing

我发现有两个公式很难在MATLAB中表示.要有两个RGB图像,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)`
Run Code Online (Sandbox Code Playgroud)

对包括第三维在内的所有行和列求和.

我尝试过这样的事情:

Formula1 = sum(sum(abs(double(A)-double(B))./(m*n), 1), 2);
Run Code Online (Sandbox Code Playgroud)

但这不会给出任何错误.但是,这不是表示它的正确方法,因为if条件没有合并.问题的区域是如何通过检查是否A == B以及是否合并条件A != B.

2. Formula2 ={ 1/ (m*n)} * sum { norm (A - B) / 255} * 100 同样,这里也将是求和所有尺寸.我不知道如何形成矩阵的规范.

  1. Formula3 is ={ 1/ (m*n)} * sum {(A - B) / 255} * 100 我试过这样的

    C = double(sum(AB,3)); r =重塑(100*(C/255)/(m*n),[1 3])

但是有一个错误,说维度应该相同,重塑不起作用.

mtr*_*trw 5

用于Formula1:

function r = Formula1(A,B)
[m,n,d] = size(A); %# A and B must have the same dimension
C = A ~= B; %# C has a 1 in every pixel that's different
r = double(sum(C(:)))/(m*n);
r = r/d; %# normalize by number of color planes
Run Code Online (Sandbox Code Playgroud)

~=运营商检查的不平等. (:)矢量化矩阵,允许我们计算所有维度的总和.

用于Formula2:

function r = Formula2(A,B)
[m,n,d] = size(A);
C = double(sum(A-B, 3)); %# sum over the color planes
C = C/d; %# normalize by number of color planes
K = norm(C); %# or norm(C,1), norm(C,inf) etc.
r = 100*(K/255)/(m*n);
Run Code Online (Sandbox Code Playgroud)

这里,sum(A-B, 3)对颜色平面求和,留下具有原始图像尺寸的2D矩阵.有几种矩阵规范,您可以在NORM文档中找到您的选择.