Search code examples
image-processingscilab

scilab - Implementing log function on images


I want to apply a log function to images. But it fails showing this error: function is not defined on this type of argument.

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

Solution

  • I think your problem is that imread returns a matrix of uint8 type. To apply log, you should convert it to double. There are at least 2 ways to do this, one built in, and one from 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));