Вместо «чистой» обработки изображений, как Андер Бигури выше, я бы предложил, возможно, другой подход (на самом деле два).
Концепция здесь заключается не в том, чтобы полагаться на чисто алгоритмическую обработку изображений, а на использование рычагов. знание специфики вашей ситуации:
1) Учитывая, что контейнер металлический (как вы сказали), другой подход, который может быть намного проще, - это просто пороговая обработка, основанная на определенном числе HU для металлаframe.
Хотя вы показываете изображения в виде простых оттенков серого, на самом деле изображения CT представляют собой 16-разрядные изображения с выравниванием по окну при просмотре в 256-битном представлении в оттенках серого, поэтому изображения выше не являются истинным представлением полного изображения. информация, доступная в данных изображения, которая на самом деле составляет 16 бит.
Металлический каркас, скорее всего, будет иметь значение HU, которое значительно отличается от (выше, чем) чего-либо в анатомии. Если этов таком случае, тогда простое пороговое значение, то вычитание будет гораздо прощеy, чтобы удалить его.
2) Другой подход также будет основан на рассмотрении геометрии и свойств конкретной ситуации:
На изображениях выше вы можете посмотреть на вертикальный профильвверх по центру изображения (по столбцам), чтобы найти местоположение рамки - где точка является точкой, в которой вертикальный профиль переходит в значение HU, соответствующее кадру.
С этой точки выможет использовать подход заливки (например, scikit flood_fill ), чтобы найти все связанные точки в пределах определенного допуска.
Это также даст вам набор точек (маску), совпадающий с рамкой, который вы можете использовать для удаления его из исходного изображения.
Я думаю, что любой из этихподходы будут более быстрыми и более надежными для ситуации, которую вы предлагаете.