SciLab中的图像处理(将图像转换为棕褐色)

时间:2016-10-17 14:32:58

标签: image-processing scilab

我正在做作业,我鼓励出现问题。 我的任务是在SciLab中编写一个将正常图像转换为棕褐色的函数。 我必须使用将红色乘以α和蓝色乘以β的算法,其中alpha> 1和β< 1和alpha + beta = 2。

这是我的代码。 出于某种原因,这2行没有正常工作:

//img2(i,j,2) = img(i,j);
//img2(i,j,3) = uint8(double(img(i,j))*beta);

function out = Ex2(im,alpha)
[h w d] = size(im);
img2 = uint16(zeros(h,w,d));
img = rgb2gray(im);
beta = 2-alpha;
for i=1:h
    for j=1:w
        img2(i,j,1) = uint16(double(img(i,j))*alpha); //condition if > 255
        if img2(i,j,1) > 255 then
            img2(i,j,1) = 255;
        end
        //img2(i,j,2) = img(i,j);
        //img2(i,j,3) = uint8(double(img(i,j))*beta);
    end
end
out = img2;
endfunction

1 个答案:

答案 0 :(得分:0)

获得结果的方法更简单

function sepia2(img)
    img = rgb2gray(img);
    img = uint16(img);
    [h w] = size(img);

    W = 30;

    for i=1:h
        for j=1:w
            if (img(i,j) + (2*W)) > 255 then
                out(i,j,1) = 255;
                else
                out(i,j,1) = (img(i,j) + (2*W));
            end
            if (img(i,j) + (W)) > 255 then
                out(i,j,2) = 255;
                else
                out(i,j,2) = (img(i,j) + (W));
            end
            out(i,j,3) = img(i,j);
        end
    end

    out = uint8(out);
    imshow(out);
endfunction

img = imread('lena3.jpg');
sepia1(img);