我需要一个用于Matlab图像处理的代码示例

问题描述 投票:0回答:1

This is what i need to obtain

This is what i have in the beginning

我是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

我可能不正确,我不太清楚。预先感谢。

matlab image-processing grayscale contrast
1个回答
-1
投票

代替使用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

要获得您给出的结果,您需要提供有关如何获得它的更多信息。它是图像处理中的示例图像之一,因此我认为这是一项任务。您可以提供作业详细信息吗?

© www.soinside.com 2019 - 2024. All rights reserved.