gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-03 20:22:46 24 4
gpt4 key购买 nike

我发现有两个公式很难在 MATLAB 中表示.假设有两个 RGB 图像,AB,大小相同,mn 代表行和列和第三维 d = 3。 Formula1 基本上计算像素的变化率,如果 A 是原始图像而 B 是失真版本。 Formula2 计算像素的平均变化率。

1. 公式 1= { 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)} * 总和 { 范数 (A - B)/255} * 100同样,这里也是所有维度的总和。我不知道如何形成矩阵的范数。

  1. 公式 3 ={ 1/(m*n)} * 总和 {(A - B)/255} * 100我试过这样

    C = double(sum(A-B,3));r = 整形(100*(C/255)/(m*n),[1 3])

但是有一个错误说尺寸应该相同并且 reshape 不起作用。

最佳答案

对于 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

~= 运算符检查不等式。 (:) 向量化矩阵,使我们能够计算所有维度的总和。

对于 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);

此处,sum(A-B, 3) 对颜色平面求和,留下一个具有原始图像尺寸的二维矩阵。有几种矩阵范数,您的选择在documentation for NORM中可用。 .

关于matlab - MATLAB中如何计算像素的变化率,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3788543/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com