2013-07-11 12 views
8

Jestem bardzo nowy w programowaniu w Pythonie, a ja wciąż próbuję wszystko wymyślić, ale mam problem z próbą gaussian gładki lub convolve obrazu. Jest to prawdopodobnie łatwa poprawka, ale spędziłem tyle czasu, próbując to rozgryźć, bo zaczynam szaleć. Mam plik 3D .fits grupy galaktyk i wyciąłem pewną z nich i zapisałem ją do png z aplpy. Zasadniczo, musi zostać wygładzony jako gaussia do większego rozmiaru wiązki (to znaczy, aby całość była większa przez rozszerzenie FWHM, ale przyciemnienie wyjścia). Wiem, że są rzeczy takie jak scipy.ndimage.convolve i podobna funkcja w numpy, z której mogę korzystać, ale mam problemy z tłumaczeniem jej na coś użytecznego. Jeśli ktokolwiek może mi pomóc i wskazać mi właściwy kierunek, będzie to ogromna pomoc.Gaussian Wygładzanie obrazu w pytonie

+0

próbowałeś OpenCV (OpenCV) [http://opencv.willowgarage.com/documentation/python/imgproc_image_filtering.html] – PepperoniPizza

+0

Próbowałem link, ale to nie zadziałało. – Jenn

+0

Tak, przepraszam, był literówka, spróbuj teraz: http://opencv.willowgarage.com/documentation/python/imgproc_image_filtering.html – PepperoniPizza

Odpowiedz

14

Może coś takiego?

import numpy as np 
import scipy.ndimage as ndimage 
import matplotlib.pyplot as plt 

img = ndimage.imread('galaxies.png') 
plt.imshow(img, interpolation='nearest') 
plt.show() 
# Note the 0 sigma for the last axis, we don't wan't to blurr the color planes together! 
img = ndimage.gaussian_filter(img, sigma=(5, 5, 0), order=0) 
plt.imshow(img, interpolation='nearest') 
plt.show() 

enter image description here enter image description here

(oryginalnego obrazu pobranego z here)

+0

To zadziałało naprawdę dobrze, dziękuję! Czy wiesz, czy jest to możliwe z samym plikiem .fits? Wtedy mógłbym zrobić to z oryginalnym plikiem, nie konwertując go na png. – Jenn

+1

Będziesz potrzebował konkretnej biblioteki do odczytu tego formatu. Szybko wyszukiwarka Google doprowadziła mnie [tutaj] (http://www.astropy.org/). Nie mam zainstalowanego 'astropy' w moim systemie, ale wygląda na to [dobrze udokumentowane] (https://astropy.readthedocs.org/en/v0.2.3/io/fits/index.html). – Jaime

+0

po prostu użyć pyfits? import pyfits A = pyfits.getdata (nazwa pliku) niż A powinien być numpy.ndarray z twoimi danymi w nim, a następnie zrobić filtr ndimage na nim – usethedeathstar