【问题标题】:Find transition in a signal and threshold (using Octave)查找信号和阈值中的转换(使用 Octave)
【发布时间】:2021-06-20 22:29:29
【问题描述】:

我在这张图片中有这个检测转换(Iclock):

[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


【解决方案1】:

您通过模型拟合来估计照度的想法还不错。对于相似的图像,抛物线轮廓应该足够了。

或者,您可以通过水平方向的低通滤波来估计光照。确保裁剪掉白色边框。

【讨论】:

    猜你喜欢
    • 2012-06-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-24
    • 2020-02-03
    • 1970-01-01
    相关资源
    最近更新 更多