DM中是否存在返回图像表达式中位数的函数?求解决方案
在DigitalMicrograph(DM)中计算图像全局中位数的解决办法
DM中的median()函数仅支持数字表达式,直接调用image.median()会执行中值滤波(邻域内取中值),而非计算整个图像的全局中位数,因此无法得到预期结果。以下是三种可行的解决办法:
方法1:将图像转为数字数组后调用数字版median()函数
把图像直接赋值给数字数组,再利用支持数组输入的median()函数计算全局中位数:
// 图像转数组计算全局中位数 image img := exprsize(5, icol); number[] imgArray = img; // 将图像数据转为数字数组 number globalMedian = median(imgArray); OKDialog( "全局中位数 = " + globalMedian );
方法2:使用ImageStatistics类获取统计值
通过ImageStatistics类可以一次性获取图像的多种统计参数,包括中位数:
// 利用ImageStatistics类获取中位数 image img := exprsize(5, icol); ImageStatistics stats = ImageStatistics(img); number globalMedian = stats.GetMedian(); OKDialog( "全局中位数 = " + globalMedian );
方法3:使用Statistics()函数(兼容旧版本)
这是DM早期版本就支持的函数,通过输出参数返回中位数,同时还能获取图像的最值和均值:
// 用Statistics函数获取中位数 image img := exprsize(5, icol); number minVal, maxVal, meanVal, medianVal; Statistics(img, minVal, maxVal, meanVal, medianVal); OKDialog( "全局中位数 = " + medianVal );
内容的提问来源于stack exchange,提问作者KEVIVI
相关产品推荐
相关产品推荐

