【发布时间】:2021-06-20 22:29:29
【问题描述】:
[cy, cx] = size(Iclock);
meanclock = zeros(1,cx);
for i = 1:cx
meanclock(i) = mean(Iclock(:,i));
end
x = [1:cx];
c=polyfit(x',meanclock',2);
for i = 1 : cx
splineclock(i) = c(1,1)*(i)^2 + c(1,2)*i + c(1,3) ;
end
for i = 1:cx
if meanclock(i) > splineclock(i)
meanclock(i) = 255;
else
meanclock(i) = 0;
endif
endfor
要做到这一点,我的意思是所有列,并用二次样条插值信号。 我可以对信号进行阈值处理并获得方波。
这不能正常工作,因为光分布不遵循二次路径,也没有考虑图像失真。 结果不够好。
请问您还有其他解决方案可以帮助我吗? 谢谢
【问题讨论】:
-
你几乎拼写了我接下来要尝试的事情:图像失真?不扭曲它。如果因为无法校准相机而无法校准,则将其单独应用于图像的每一行。光不是二次路径吗?然后使用其他路径?使用高阶样条(但不要太高,因为你可能会过拟合)。但是,我并不完全相信第二件事真的是个问题。
-
不扭曲图像在这种情况下不可用。我想尽量不使用高阶样条,而是使用自适应方法(比如看看局部最大值和最小值之间的区别)
-
当然没关系,但尝试每行都这样做,我怀疑这已经给你一个更好的解决方案。实际上,如果要考虑失真,则需要这样做
-
IMO,不失真完全是矫枉过正。
-
你的结果有什么问题?看起来很完美。
标签: matlab image-processing signal-processing octave threshold