我正在做作业,我鼓励出现问题。 我的任务是在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
答案 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);