2016-07-14 2 views
1

У меня есть изображение, в котором половина изображения затемняется либо NaN, либо нулями (я могу выбрать, какой из них или поместить любое другое значение в эту половину изображения) и Я хочу сделать обнаружение края Sobel на всем изображении, не обращая внимания на линию, образованную переходом от NaN/0 к фактическому изображению. Вот пример изображения я хочу сделать обнаружение края на:Как обнаружить обнаружение края Sobel игнорировать NaN или 0

enter image description here

Я бы просто сделать обнаружение края на правой стороне изображения, но позже в моем проекте, я буду иметь изогнутую форму вместо красивого прямоугольного, так что будет некоторое количество NaN/0, независимо от того, как я обрезаю его.

Когда я обнаружение края прямо сейчас я получаю: enter image description here

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

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

Любая помощь была бы принята с благодарностью!

P.S. Да, это изображение плодовой мухи.

+0

Просто сделайте это с помощью NaNs, затем сделайте свое пороговое значение, а затем преобразуйте NaN в двоичные нули. Я не понимаю вашу проблему? – rlbond

+0

Вы уверены, что его Sobel? Похож на обнаружение края Canny. – kosinix

+0

@kosinix: что заставляет вас так говорить? –

ответ

0

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

1

Ребра, обнаруженные вдоль недопустимой области, будут ограничены в соседнем соседстве 3x3. Просто удалите эти пиксели, используя исходное изображение в виде маски (с расширением).