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
同样,这里也将是求和所有尺寸.我不知道如何形成矩阵的规范.
Formula3 is ={ 1/ (m*n)} * sum {(A - B) / 255} * 100
我试过这样的
C = double(sum(AB,3)); r =重塑(100*(C/255)/(m*n),[1 3])
但是有一个错误,说维度应该相同,重塑不起作用.
用于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的文档中找到您的选择.
| 归档时间: |
|
| 查看次数: |
3164 次 |
| 最近记录: |