首页 > 解决方案 > 为什么绝对值差异测试在 MATLAB 中没有给出正确的结果

问题描述

我有一个在 MATLAB 中读取的灰度图像,我想通过绝对阈值差 [0,1,3] 计算有多少像素与左侧邻居具有相同或不同的值的比率。最初我使用以下代码:

[row,col] = size(processed_map);
flagged_map = zeros(row,col);

for thres = [0,1,3]

    cnt = 0;
    for i=1:row
        if (mod(i, 10) == 0)

            %fprintf('Line %i is processed .\n', i); 
        end
        
        for j =2:col
           
            left_n = processed_map(i,j-1);
            current = processed_map(i,j);    
                            
            if(abs(left_n - current) <= thres)
                fprintf('Current Pixel Value = %i , its neighbour value = %i \n',current,left_n);
                cnt = cnt + 1;
                flagged_map(i,j) = 1;


            end
 
        end

    end
      format long g  
      Ratio = round(100 * cnt/(row * (col-1)),2);

     
     fprintf('DELTA = %i : %.2f \n',thres,Ratio);
      
end

对于“0”的阈值,这意味着我正在寻找相同的邻居值。当它进入“如果条件相同的值”时,我得到一些打印的语句输出为

Current Pixel Value = 118 , its neighbour value = 53 
Current Pixel Value = 119 , its neighbour value = 118 

这当然是不正确的!我不知道为什么!但是,当我使用以下 if

阈值 = 0 的声明

if(left_n == current)

所有输入的 current 和 left_n 像素都符合预期。当编写为给定代码时,其他阈值绝对条件也会发生相同的错误。

标签: arraysimagematlabif-statement

解决方案


推荐阅读