how to find the variable in the code ? and if i put that at the end of program its showing Function definitions are not permitted in this context. ??
1 vue (au cours des 30 derniers jours)
Afficher commentaires plus anciens
venmal devi
le 2 Sep 2015
Réponse apportée : Walter Roberson
le 2 Sep 2015
close all;
%RGB2LAB Convert an image from RGB to CIELAB
%
% function [L, a, b] = RGB2Lab(R, G, B)
% function [L, a, b] = RGB2Lab(I)
% function I = RGB2Lab(...)
%
% RGB2Lab takes red, green, and blue matrices, or a single M x N x 3 image,
% and returns an image in the CIELAB color space. RGB values can be
% either between 0 and 1 or between 0 and 255. Values for L are in the
% range [0,100] while a and b are roughly in the range [-110,110]. The
% output is of type double.
%
% This transform is based on ITU-R Recommendation BT.709 using the D65
% white point reference. The error in transforming RGB -> Lab -> RGB is
% approximately 10^-5.
%
% See also LAB2RGB.
% By Mark Ruzon from C code by Yossi Rubner, 23 September 1997.
% Updated for MATLAB 5 28 January 1998.
% Updated for MATLAB 7 30 March 2009.
if nargin == 1
B = double(R(:,:,3));
G = double(R(:,:,2));
R = double(R(:,:,1));
end
if max(max(R)) > 1.0 || max(max(G)) > 1.0 || max(max(B)) > 1.0
R = double(R) / 255;
G = double(G) / 255;
B = double(B) / 255;
end
% Set a threshold
T = 0.008856;
[M, N] = size(R);
s = M * N;
RGB = [reshape(R,1,s); reshape(G,1,s); reshape(B,1,s)];
% RGB to XYZ
MAT = [0.412453 0.357580 0.180423;
0.212671 0.715160 0.072169;
0.019334 0.119193 0.950227];
XYZ = MAT * RGB;
% Normalize for D65 white point
X = XYZ(1,:) / 0.950456;
Y = XYZ(2,:);
Z = XYZ(3,:) / 1.088754;
XT = X > T;
YT = Y > T;
ZT = Z > T;
Y3 = Y.^(1/3);
fX = XT .* X.^(1/3) + (~XT) .* (7.787 .* X + 16/116);
fY = YT .* Y3 + (~YT) .* (7.787 .* Y + 16/116);
fZ = ZT .* Z.^(1/3) + (~ZT) .* (7.787 .* Z + 16/116);
L = reshape(YT .* (116 * Y3 - 16.0) + (~YT) .* (903.3 * Y), M, N);
a = reshape(500 * (fX - fY), M, N);
b = reshape(200 * (fY - fZ), M, N);
if nargout < 2
L = cat(3,L,a,b);
end
function lab = rgb2lab(rgb);
0 commentaires
Réponse acceptée
Image Analyst
le 2 Sep 2015
You can't use nargin in a script, only in functions. You got rid of the first function statement which turned it into a script. Anyway you don't need all that and don't need that function. Like you show at the bottom, there is a built in function rgb2lab so you don't need that guy's custom function anymore.
0 commentaires
Plus de réponses (1)
Walter Roberson
le 2 Sep 2015
You made most of the same mistakes as I told you about in http://uk.mathworks.com/matlabcentral/answers/239150-how-to-convert-color-image-into-lab-color-model-its-showing-error
You need to write the code for RGB2Lab into RGB2Lab.m complete with its "function" statement. You need to delete the "function lab = rgb2lab(rgb);" that you added. Then you need to call RGB2Lab with appropriate arguments such as an RGB image you have read in.
0 commentaires
Voir également
Catégories
En savoir plus sur Color dans Help Center et File Exchange
Produits
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!