Skip to content

Details of gCNR computation #2

@nk7-98

Description

@nk7-98

I’m trying to reproduce the gCNR metric exactly as used in the paper, and I want to confirm a few implementation details (especially around the ROIs and histogram/integration choices). I may have missed this in the repo/docs.

1) ROI construction details

From the paper: LV cavity vs myocardium, where myocardium is created by expanding the LV mask and subtracting the original mask.

  • How much do you expand/dilate the LV mask to form the myocardium “ring” (kernel size / radius / iterations / structuring element)?
  • Is dilation done in pixel space (fixed number of pixels), or relative to LV size (e.g., % of bbox / equivalent radius)?
  • Do you apply any additional cleanup (closing/opening, hole filling, removing small components)?

2) LV “compression” + bottom truncation

The paper mentions compressing the LV ROI and truncating the bottom ~30% to reduce bias.

  • What does “compress” mean operationally (erode? scale about centroid? shrink bbox? something else)?
  • Is the 30% truncation based on:
    • LV mask height,
    • LV bounding box height,
    • image height,
    • or something else?
  • Is “bottom” defined in image coordinates (increasing y), and do you apply truncation before/after dilation?

3) gCNR calculation specifics

I’m implementing gCNR as 1 - ∫ min(pA(x), pB(x)) dx using intensity distributions from the two ROIs.

  • Are intensities computed on raw grayscale, or after any pre-processing (e.g., log compression, normalization, clipping)?
  • Are distributions pA, pB computed via:
    • histogram (if so: #bins, bin range, density normalization),
    • KDE,
    • or something else?
  • In the discrete implementation, do you compute:
    • sum(min(pA, pB)) * bin_width (integral approximation),
    • or just sum(min(pA, pB)) with already-normalized densities?
  • Do you sample equal numbers of pixels from each ROI, or use all available pixels?
  • Any special handling for frames where one ROI has too few pixels?

4) Where in the repo?

If this is already implemented:

  • Could you point me to the exact file/function that constructs the ROIs and computes gCNR?

Thanks a lot — even a short pointer (or parameter values like dilation iterations/bins) would help me match your results.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions