2016-09-30 2 views
2

Я пытаюсь удалить пятнышко шума в спутниковом SAR-изображении. Я не получаю никакого пакета, который делает удаление пятна в изображении SAR. Я пробовал pyradar, но он работает с python 2.7, и я работаю над Anaconda с python 3.5 на окнах. Также доступен Rsgislib, но он находится в Linux. Джозеф Мейринг также дал код фильтра Ли на github, но он не работает. : https://github.com/reptillicus/LeeFilterSpeckle (Lee Filter) в Python

Не стесняйтесь, может ли кто-нибудь поделиться сценарием python для фильтра Speckle или как продолжить работу с фильтром speckle в python.

ответ

5

Это интересная небольшая проблема. Вместо того, чтобы пытаться найти для него библиотеку, почему бы не написать ее из определения?

from scipy.ndimage.filters import uniform_filter 
from scipy.ndimage.measurements import variance 

def lee_filter(img, size): 
    img_mean = uniform_filter(img, (size, size)) 
    img_sqr_mean = uniform_filter(img**2, (size, size)) 
    img_variance = img_sqr_mean - img_mean**2 

    overall_variance = variance(img) 

    img_weights = img_variance**2/(img_variance**2 + overall_variance**2) 
    img_output = img_mean + img_weights * (img - img_mean) 
    return img_output 

Если вы не хотите, чтобы окно быть квадратом размера х размеров, просто заменить uniform_filter с чем-то еще (сверткой с диском, гауссов фильтром, и т.д.). Любой тип (взвешенный) усредняющий фильтр будет делать, если он одинаковый для расчета как img_mean, так и img_square_mean.

Фильтр Ли кажется довольно старомодным как фильтр. Он не будет хорошо вести себя по краям, потому что для любого окна, в котором есть ребро, дисперсия будет намного выше, чем общая дисперсия изображения, и поэтому веса (отфильтрованного изображения относительно отфильтрованного изображения) идут чтобы быть ближе к 1.

пример:

from pylab import * 
import numpy as np 
img = np.random.normal(0.5, 0.1, (100,100)) 
img[:,:50] += 0.25 
imshow(img, vmin=0, vmax=1, cmap='gray') 
imshow(lee_filter(img, 20), vmin=0, vmax=1, cmap='gray') 

Noisy image with edge Lee filtered

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

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

+0

Большое спасибо !!!! Алекс, на самом деле я новичок в этом домене и не смог найти хорошую литературу. Спасибо большое !!!!!!!! –

+1

@Shubham_geo Добро пожаловать. Я добавил несколько заметок и пример. –

+0

Пакет pyradar кажется проблемой для изображений, которые у меня есть, не могли бы вы указать нам правильное место, где мы можем найти определения для всех фильтров здесь, как и тот, который у вас есть выше? https://pyradar-tools.readthedocs.io/en/latest/examples.html#example-of-filtros – bicepjai

Смежные вопросы