2017-01-17 5 views
0

Je souhaite appliquer une fonction de consignation aux images. Mais il ne montre pas cette erreur: function is not defined on this type of argument.scilab - Implémentation de la fonction de consignation sur les images

uk=imread('image.jpg'); 
result=log(uk(:,:,1)); 
+0

assurez-vous que votre image est convertie en échelle de gris –

+0

Non, je dois obtenir le résultat du journal pour les trois canaux RVB – user7417788

+0

Quelle est l'erreur que vous obtenez? Peut-être que vous utilisez une fonction de log qui ne prend pas une matrice de valeurs juste un scalaire? aussi lorsque vous utilisez le journal vous devez vous assurer que vous n'avez pas de zéros dans l'image parce que log (0) = undifine donc mieux faire log (uk (:,:, 1) + ones (:, :)) –

Répondre

1

Je pense que votre problème est que imread renvoie une matrice de type uint8. Pour appliquer log, vous devez le convertir en double. Il y a au moins 2 façons de le faire, un intégré, et un de SIVP:

clc; 
clear; 
im = imread("d:\Attila\PROJECTS\Scilab\Stackoverflow\mixer_crop.jpg"); 
//imshow(im); 
disp(typeof(im(:,:,1)),"Original type:"); 

//use double 
M = double(im(:,:,1)); 
disp(typeof(M),"Modified type:"); 
result=log(M); 
//imshow(uint8(M)); 

//use im2double 
M2 = im2double(im); 
disp(typeof(M2(:,:,1)),"Modified type 2:"); 
result=log(M2(:,:,1)); 
//imshow(im2uint8(M2)); 
+0

Merci pour votre réponse. En fait, mon code fonctionne après avoir converti la matrice en double et j'ajoute 1 à tous – user7417788