我是Matlab的新手。我需要从第二张图片开始到第一张图片。这是我的图像处理功能代码:
function out = fct(a,b,Ta,Tb,x);
x = double(x);
for i=1:size(x,1);
for j=1:size(x,2);
if(x(i,j)>=0 && x(i,j)<a);
out(i,j)=x(i,j)*Ta/a;
elseif((x(i,j)>a) && (x(i,j)<b));
out(i,j) = Ta + ((Tb-Ta)/(b-a))*(x(i,j)-a);
else
out(i,j) = Tb + (256-1-Tb)/(256-1-b)*(x(i,j)-b);
end
end
end
我可能不正确,我不太清楚。预先感谢。
代替使用for
循环,您可以执行以下操作:
function out = fct(a,b,Ta,Tb,x)
x = double(x);
cond1 = x < a;
cond2 = (x > a) & (x < b);
cond3 = ~(cond1 | cond2);
out = zeros(size(x));
out(cond1) = x(cond1) * Ta / a;
out(cond2) = Ta + (Tb - Ta) / (b - a) * (x(cond2) - a);
out(cond3) = Tb + (255 - Tb) / (255 - b) * (x(cond3) - b);
end
要获得您给出的结果,您需要提供有关如何获得它的更多信息。它是图像处理中的示例图像之一,因此我认为这是一项任务。您可以提供作业详细信息吗?