Фоновое вычитание в MATLAB

Я надеюсь делать фоновое вычитание на изображении. Я плохо знаком с MATLAB и плохо знаком с обработкой изображений / анализ, очень жаль если какое-либо из этого звучит глупым. 1) Кроме imsubtract () там другие способы сделать фоновое вычитание (помимо сравнения одного изображения другому)? 2) В Математическом объяснении Работ imsubtract (), почему они делают свой элемент структурирования диском? Это кажется довольно трудным до сих пор, потому что каждый раз я пробую что-то, я заканчиваю тем не только, что вычел шумный фон, но также и потерял части изображения, на которое я хочу посмотреть!

6
задан Jav_Rock 31 May 2012 в 13:25
поделиться

1 ответ

С каким изображением вы работаете?

Фоновое вычитание - это просто. Если вы хотите вычесть постоянное значение или фон того же размера, что и ваше изображение, просто напишите img = img - background. imsubtract просто гарантирует, что в любом месте, где фон больше изображения, результат будет равен нулю.

Оценка фона - это сложно. Здесь необходимо знать, что за изображение перед вами, иначе оценка фона будет неудачной.

Если у вас есть, например, пятна или линии, которые либо все темные на светлом, либо светлые на темном фоне, вы можете пройти через них с помощью фильтра локального максимума (imdilate) или фильтра локального минимума (imerode), соответственно, который больше, чем ваши особенности, так что где бы вы ни разместили маску фильтра, есть несколько пикселей, которые покрывают фон. Кроме того, нужно, чтобы фильтр имел несколько схожую с объектами форму. В вашем случае, если вы потеряете часть изображения, вы можете попытаться сделать фильтр больше (но не слишком).

Вместо вычитания максимума или минимума может хорошо работать вычитание медианы, хотя нужно выбирать размер фильтра так, чтобы в маске фильтра обычно было большинство пикселей фона. К сожалению, медианная фильтрация довольно медленная.

5
ответ дан 10 December 2019 в 02:42
поделиться
Другие вопросы по тегам:

Похожие вопросы: