如何在MATLAB中将相对距离划分为三个等距区域?

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

亲爱的 Stack overflow 用户, 我有两个距离图。一是指一点到外面的距离(从0开始,到高数结束反映到一点的距离)。另一个基本上是相等和相反的(从高数开始,到 0 结束,反映与相对点的距离)。两者之间有一个点重叠(即它们过零)。

我正在尝试使用这两个距离图将一个区域划分为三个等距区域。 这使用“双边距离”相对容易,因为如果距离图 1 和距离图 2 之间的差异 > 0,那么这将有资格作为一个区域。如果距离图 1 和距离图 2 之间的差异< 0, then this would qualify as the other zone.

但是,我正在尝试对三个等距区域执行此操作。我想知道是否有任何方法可以使用 MATLAB 代码来实现。不幸的是,我不喜欢数学......但是这篇论文 [ https://link-springer-com/chapter/10.1007/3-540-47979-1_39 ] 解释了如何在更数学和理论的基础上完成水平。

这样做的理由是因为我可以为所有参与者在两点之间创建等距区域,而不是采用易受大脑变化影响的固定单边距离。

到目前为止我已经尝试过这段代码:

function Out = test_wmhs_BD(Mask_WMH,Mask_WM,Dmap_Vent,Dmap_Cort)

if ~isequal(size(Mask_WMH),size(Mask_WM),size(Dmap_Vent),size(Dmap_Cort))
    disp('Dimension of inputs must match.');
    Out=[];
    
else
    bd=Dmap_Cort-Dmap_Vent;
    bdThird = bd/3;
    Out((bd < bdThird) && Mask_WMH==1) = 1;
    Out((bdThird <= bd) <= bd-bdThird && Mask_WMH==1) = 2;
    Out((bd > bd-bdThird) && Mask_WMH==1) = 3;
       
end

其中Dmap_Vent指的是一张距离图,Dmap_Cort指的是另一张距离图。 我基本上尝试将双边距离分成三分之一,并使用条件说如果双边距离小于三分之一,则将输出分类为 1,如果双边距离大于三分之一但小于三分之二,则分类输出为2,如果双边距离大于三分之二,则将输出分类为3.

我原以为这会起作用……但是我随后意识到,由于双边距离包含一个零交叉点,任何除法都会失败,因为它在数学上是不正确的! (功能失败)。

感谢您的宝贵时间!

function matlab euclidean-distance neuro-image
© www.soinside.com 2019 - 2024. All rights reserved.