reconstruction Error of 2 colored images

4 次查看(过去 30 天)
I have an original image of dimension 300x300x3 (RGB)
after removing some entries, I apply an algorithm to reconstuct the original image.
Now i want to find the relative error between the 2 images.
....
% I call my function norm_fro to calcuate the error
Erec(i)= norm_fro( X_origin , X_r ecovered);
....
% here is my norm_fro function
function f = norm_fro( X , Xhat )
f = norm(X -Xhat,'fro')^2/norm(X,'fro')^2;
end
I get this error
Error using norm
Input must be 2-D.
Error in norm_fro (line 11)
f = norm(X -Xhat,'fro')^2/norm(X,'fro')^2;

回答(1 个)

sanidhyak
sanidhyak 2025-2-4
Hi fadmas18,
I understand that you are trying to find the relative error between 2 images using MATLAB’s “norm” function inside your custom-made function “norm_fro”.
When running the provided code, I too faced a similar error. This error occurs because the input images provided, “X and Xhat are 3D arrays (300×300×3 for RGB), while the norm function with the fro option expects a 2D matrix. To resolve this, you need to reshape the images into 2D matrices before applying the Frobenius norm.
Kindly refer to the following corrected code:
function f = norm_fro(X, Xhat)
% Reshape 3D image into 2D matrix
X = reshape(X, [], size(X, 3));
Xhat = reshape(Xhat, [], size(Xhat, 3));
% Compute Frobenius norm
f = norm(X - Xhat, 'fro')^2 / norm(X, 'fro')^2;
end
The command reshape(X, [], size(X, 3)) changes the 300×300×3 image into a 90000×3 matrix, making it compatible with the norm function. This method enables the correct computation of the Frobenius norm for the 2D representation. With this adjustment, the "Input must be 2-D" error is fixed, allowing for an accurate calculation of the relative error.
For further reference on the “norm” function in MATLAB, kindly refer to the below documentation:
Cheers & Happy Coding!

类别

Help CenterFile Exchange 中查找有关 Image Processing Toolbox 的更多信息

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by