对比噪声比 衬噪比 CNR计算公式(附代码~注释清楚易懂)

您所在的位置:网站首页 inr计算公式 对比噪声比 衬噪比 CNR计算公式(附代码~注释清楚易懂)

对比噪声比 衬噪比 CNR计算公式(附代码~注释清楚易懂)

2023-09-28 16:28| 来源: 网络整理| 查看: 265

1、计算公式

参照文献《The Generalized Contrast-to-Noise Ratio: A Formal Definition for Lesion Detectability》中的计算方式 doi:10.1109/TUFFC.2019.2956855 C N R = ∣ μ R O I − μ b a c k g r o u n d ∣ σ R O I 2 + σ b a c k g r o u n d 2 CNR=\frac{|\mu_{ROI}-\mu_{background}|}{\sqrt{\sigma_{ROI}^2+\sigma_{background}^2}} CNR=σROI2​+σbackground2​ ​∣μROI​−μbackground​∣​

2、代码实现 function CNR = get_CNR(img, x_center, y_center) % 感兴趣区域(ROI)的坐标范围[xmin, ymin, xmax, ymax] % 这里我设置的是质心上下左右各外扩10像素,你们可以自己改 xmin = round(x_center - 10); xmax = round(x_center + 10); ymin = round(y_center - 10); ymax = round(y_center + 10); % 获取ROI区域像素在全局图像中的下标 % sub2ind函数能够将矩阵中元素的下标转换为对应的线性索引,因此思路如下: % 1、选取由[xmin,ymin,xmax,ymax]框成的矩形区域 % 2、得到这个区域内每一个像素的坐标值,由于sub2ind的输入要求(参照matlab官网),其需要分开指定对应元素的行和列 % 因此需要将ROI内每一个像素的横纵坐标分别存储至x数组和y数组中(用ndgrid函数) % 3、基于得到的x数组和y数组以及sub2ind函数得到这堆像素的线性索引,并使用setdiff函数得到背景的线性索引 % 4、基于ROI和背景像素的线性索引得到其像素强度,然后计算得到CNR值 [x,y] = ndgrid(xmin:xmax, ymin:ymax); % 将ROI中元素的对应横坐标和纵坐标分别存储 roi_idx = sub2ind(size(img), x(:), y(:)); % 获取背景区域像素在全局图像中的下标 bg_idx = setdiff(1:numel(img), roi_idx); % 将感兴趣区域和背景区域的像素赋值到roi和bg中 roi = double(img(roi_idx)); bg = double(img(bg_idx)); roi_mean = mean(roi); % 计算感兴趣区域的平均灰度值 bg_mean = mean(bg); % 计算背景区域的平均灰度值 CNR = abs(roi_mean - bg_mean) / sqrt(var(roi) + var(bg)); % 计算CNR end 3、结语

最近自己也在弄CNR指标的计算,看了看网上说法各异没有统一,因此参照了这篇论文的计算方式并自己用代码实现了,代码已经测试过,没有问题,希望能够帮到你们



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3