Как извлечь часть изображения внутри указанной границы в MATLAB - PullRequest
8 голосов
/ 15 июля 2011

Я новичок в MATLAB, я хотел знать, могу ли я извлечь часть изображения изнутри указанной границы, основываясь на различающемся цвете (красная граница в моем случае), Функция сначала отслеживает границу изображениязатем он извлекает ту часть изображения, которая находится внутри этой конкретной границы.Я приложил свое изображение (изображение человеческой головы), я хотел извлечь часть мозга из головы, другую часть изображения следует игнорировать.Я попытался найти ребра, используя следующий код (он показывает 1 для границ и 0 для без границ), но он показал только 0.

Любая помощь будет принята с благодарностью.

PSприкрепленное изображение показывает исходное изображение и изображение с границей .... код будет работать с кодом с границей и извлечет часть изображения, лежащую внутри этой границы.

Ниже приведен код, который я пробовал:

BW = edge(x)

BW = edge(x,'sobel')
BW = edge(x,'sobel',thresh)
BW = edge(x,'sobel',thresh,direction)
[BW,thresh] = edge(x,'sobel',...)

BW = edge(x,'prewitt')
BW = edge(x,'prewitt',thresh)
BW = edge(x,'prewitt',thresh,direction)
[BW,thresh] = edge(x,'prewitt',...)

BW = edge(x,'roberts')
BW = edge(x,'roberts',thresh)
[BW,thresh] = edge(x,'roberts',...)

BW = edge(x,'log')
BW = edge(x,'log',thresh)
BW = edge(x,'log',thresh,sigma)
[BW,threshold] = edge(x,'log',...)

BW = edge(x,'zerocross',thresh,h)
[BW,thresh] = edge(x,'zerocross',...)

BW = edge(x,'canny')
BW = edge(x,'canny',thresh)
BW = edge(x,'canny',thresh,sigma)
[BW,threshold] = edge(x,'canny',...)

enter image description here

Ответы [ 2 ]

4 голосов
/ 15 июля 2011

, так как вы представили свой проблемный домен как CT-изображения. У меня есть хорошее предложение для вас, чтобы извлечь область тканей мозга. Вы можете сделать хорошее предположение.

Хорошее предположение: В области мозга нет костей (нормальных случаев), кроме черепа, и, основываясь на некоторых свойствах КТ, вы можете легко извлечь (или удалить) кость (в данном случае череп), посмотрев на шкалу Хаунсфилда (* 1003). *http://en.wikipedia.org/wiki/Hounsfield_scale)

0) Чтобы получить правильные единицы поля дома, вам нужно три элемента i) исходное значение пикселя ii) изменение масштаба наклона iii) изменение масштаба перехвата (все три могут быть расположены в исходном заголовке dicom, а HU можно вычислить на основе нашего знание школьной математики: y = mx + b, поскольку у вас есть перехват, наклон и входное значение).

1) Как только вы узнаете, где находится кость, вам просто нужно вычесть свое изображение, чтобы получить что-нибудь ограниченное черепом.

2) И, посмотрев на ваши коды Matlab, я уверен, что вы можете выполнить шаг 1), чтобы отделить правильную область от остатков.

3 голосов
/ 16 июля 2011

Только для записи.Код Mathematica:

enter image description here

Редактировать

Если вы хотите только извлечь мозг без прослеживания контура, на самом деле это проще:

enter image description here

...