请帮忙!我有一个类似于附加的图像(从暗到亮的渐变,从南到北移动,带有一条有趣的水平白线)我试图从图像底部开始沿着 y 轴上的每个向量查看找到白线的底部。我可以使用类似索贝尔的边缘检测器,但是白线以南有黑点。所以进入一个点会给我的检测器一个很大的负值,我可以忽略它,但是当它离开黑点并返回渐变时我从检测器中得到一个很大的正值,我无法将其与白线底部所在的边缘区分开来。我试图放在一起的代码同时获取每个点的 sobel 值和强度,并添加到两个不同的向量(我稍后使用带有 sobel 值的向量来定位每个 y 轴向量的最大值/白线的底边)..如果有一个很大的负 sobel 值(即进入一个黑点),我会在点开始之前保持最后一个强度点,并使用“while”用零填充 sobel 向量,向上移动直到内核安全退出的黑点(强度值大于进入黑点之前),此时我开始再次收集实际的索贝尔值。我正在加载高度为 715 的图像,但我的 sobel 向量最终比这大得多......不知道我做错了什么:进入黑点)我在点开始之前保持最后一个强度点并使用“while”用零填充sobel向量,向上移动直到内核安全地离开黑点(强度值更大比进入黑点之前),此时我再次开始收集实际的索贝尔值。我正在加载高度为 715 的图像,但我的 sobel 向量最终比这大得多......不知道我做错了什么:进入黑点)我在点开始之前保持最后一个强度点并使用“while”用零填充sobel向量,向上移动直到内核安全地离开黑点(强度值更大比进入黑点之前),此时我再次开始收集实际的索贝尔值。我正在加载高度为 715 的图像,但我的 sobel 向量最终比这大得多......不知道我做错了什么:
for n=1:1:width
sobVec=[];
intVec=[];
for k=height-5:-1:5
if (-4*double(J((k+4),n))-3*double(J((k+3),n))-2*double(J((k+2),n))-1*double(J((k+1),n))+0*double(J((k),n))+1*double(J((k-1),n))+2*double(J((k-2),n))+3*double(J((k-3),n))+4*double(J((k-4),n)))>-150
sobVec(end+1)=-4*double(J((k+4),n))-3*double(J((k+3),n))-2*double(J((k+2),n))-1*double(J((k+1),n))+0*double(J((k),n))+1*double(J((k-1),n))+2*double(J((k-2),n))+3*double(J((k-3),n))+4*double(J((k-4),n));
intVec(end+1)=J(k,n);
else
if isempty(intVec)
intVec=[1];
end
while J((k-1),n)<intVec(end)
k=k-1;
sobVec(end+1)=0;
end
if J((k-1),n)>intVec(end)*1.1
for i=1:1:5
k=k-1;
sobVec(end+1)=0;
end
end
end
end
end