Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/image-processing/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Matlab 图像处理中的对比度拉伸变换_Matlab_Image Processing_Signal Processing - Fatal编程技术网

Matlab 图像处理中的对比度拉伸变换

Matlab 图像处理中的对比度拉伸变换,matlab,image-processing,signal-processing,Matlab,Image Processing,Signal Processing,我试图用matlab找到问题的答案,但找不到 我试着用这个代码来解决这个问题 我的代码块: p1=[0,0]; p2=[75,5]; p3=[140,250]; p4=[255,255]; m1=(p1(1,2)-p2(1,2))/(p1(1,1)-p2(1,1)); m2=(p2(1,2)-p3(1,2))/(p2(1,1)-p3(1,1)); m3=(p3(1,2)-p4(1,2))/(p3(1,1)-p4(1,1)); c1=p1(1,2)-m1*p1(1,1); c2=p2(1,2)-m

我试图用matlab找到问题的答案,但找不到

我试着用这个代码来解决这个问题

我的代码块:

p1=[0,0];
p2=[75,5];
p3=[140,250];
p4=[255,255];
m1=(p1(1,2)-p2(1,2))/(p1(1,1)-p2(1,1));
m2=(p2(1,2)-p3(1,2))/(p2(1,1)-p3(1,1));
m3=(p3(1,2)-p4(1,2))/(p3(1,1)-p4(1,1));
c1=p1(1,2)-m1*p1(1,1);
c2=p2(1,2)-m2*p2(1,1);
c3=p3(1,2)-m3*p3(1,1);
% Transformation function
t=[];
for x=0:255
if(x<=p2(1,1))
t=[t (m1*x+c1)];
end
if(x>p2(1,1) && x<=p3(1,1))
t=[t (m2*x+c2)];
end
if(x>p3(1,1) && x<=p4(1,1))
t=[t (m3*x+c3)];
end
end
for n=1:s(1,1)
for m=1:s(1,2)
ot(n,m)=t(a(n,m)+1);
end
end
p1=[0,0];
p2=[75,5];
p3=[140250];
p4=[255255];
m1=(p1(1,2)-p2(1,2))/(p1(1,1)-p2(1,1));
m2=(p2(1,2)-p3(1,2))/(p2(1,1)-p3(1,1));
m3=(p3(1,2)-p4(1,2))/(p3(1,1)-p4(1,1));
c1=p1(1,2)-m1*p1(1,1);
c2=p2(1,2)-m2*p2(1,1);
c3=p3(1,2)-m3*p3(1,1);
%变换函数
t=[];
对于x=0:255

如果(xp2(1,1)和&xp3(1,1)&&x在这里,我将转换函数分成三个不同的区域,每个区域都有一个唯一的斜率。通过取相邻
x
值的差值
Run
和相邻
y
值的差值
Rise
来评估斜率。取if语句的过程取决于放置强度
r
下降将决定使用哪个有效斜率。最后一步是添加每条线性线的偏移量。查找
有效运行是一个评估强度值下降到区域内多远的过程。这可以通过强度减去区域的
x
下限来完成值。这将取决于点。对于区域2,偏移量为
s1=30
,对于区域3,偏移量为
s2=230

在括号表示法中,每个区域的边界可以描述为:

区域1:范围
[0,r1]

区域2:范围
(r1,r2)

区域3:范围
[r2,255]

请花时间检查逻辑和数学,以确保以下代码中没有错误:


r=input(“请输入强度值,r:”);
fprintf(“\n”);
r1=70;
r2=150;
s1=30;
s2=230;
点_1=[0];
点_2=[r1 s1];
点_3=[r2 s2];
点_4=[255];
x=1;
y=2;
%区域坡度1%
上升=点2(y)-点1(y);
运行=点2(x)-点1(x);
坡度_1=上升/运行;
%区域坡度2%
上升=点3(y)-点2(y);
运行=点3(x)-点2(x);
坡度_2=上升/运行;
%区域坡度3%
上升=点4(y)-点3(y);
运行=点4(x)-点3(x);
坡度_3=上升/运行;
如果r=r2
fprintf(“区域3\n”);
常数_偏移=s2;
相对运行=(r-r2);
s=斜率3*相对运行+恒定偏移;
fprintf(“输出强度,s=T(r)为:%.2f\n”,s);
结束

使用MATLAB R2019b运行

获取更多问题答案的一个小技巧是解释您在代码块中采取的方法/尝试。先生,非常感谢。我还有最后一个问题,如果您看一下,我会很高兴。@Deep Blue当然,我会看一看。最后一个问题非常不同。我在b中找到了一些答案但也许他们都错了。
r = input("Please input the intensity value, r: "); 
fprintf("\n");

r1 = 70;
r2 = 150;
s1 = 30;
s2 = 230;

Point_1 = [0 0];
Point_2 = [r1 s1];
Point_3 = [r2 s2];
Point_4 = [255 255];

x = 1;
y = 2;

%Slope of region 1%
Rise = Point_2(y) - Point_1(y);
Run = Point_2(x) - Point_1(x);
Slope_1 = Rise/Run;

%Slope of region 2%
Rise = Point_3(y) - Point_2(y);
Run = Point_3(x) - Point_2(x);
Slope_2 = Rise/Run;

%Slope of region 3%
Rise = Point_4(y) - Point_3(y);
Run  = Point_4(x) - Point_3(x);
Slope_3 = Rise/Run;

if r <= r1
fprintf("Region 1\n"); 
s = Slope_1*r;
fprintf("The output intensity, s = T(r) is: %.2f\n",s); 

elseif (r1 < r) && (r < r2)
fprintf("Region 2\n"); 
Constant_Offset = s1;
Relative_Run = (r - r1);
s = Slope_2*Relative_Run + Constant_Offset;
fprintf("The output intensity, s = T(r) is: %.2f\n",s); 

elseif r >= r2
fprintf("Region 3\n"); 
Constant_Offset = s2;
Relative_Run = (r - r2);
s = Slope_3*Relative_Run + Constant_Offset;
fprintf("The output intensity, s = T(r) is: %.2f\n",s); 
   
end