2016-10-17 4 views
4

私は以下のイメージを適切なフォーマットで持っています。私はすべての星や他の小さなドットをその画像からmatlabを使用して削除したい。 enter image description hereMatlabを使って銀河のFITS画像から星やその他のオブジェクトを削除するには?

私は以下のmatlab操作を実行してその中の星を削除しました。

I = imread('NGC_0253.jpg'); 
if size(I,3)==3 
    I=rgb2gray(I); 
end 
K = imcomplement(I); 
L = I-K; 
M = medfilt2(L); 
imshow(M) 

私はこのような画像を取得しています:私はまた、次のことを試してくださいenter image description here

I = imread('NGC_0253.jpg'); 
if size(I,3)==3 
    I=rgb2gray(I); 
end 
K = imcomplement(I); 
L = I-K; 
M = bwareaopen(L,1000); 
N = medfilt2(M); 
imshow(N) 

が、それはまた私を満たしていない:enter image description here

私の目標されていません。私の目的は、画像からすべての星を取り除くことです。

だから、画像から銀河を残しておいたすべての星を削除するにはどうすればよいですか?

+0

これは非常に良い質問ですので、問題を適切に提示し、試したことを示すことに感謝します。 –

答えて

4

bwareaopenを使用すると、良い結果が得られます。 (あなたのコードの最初の部分を保つことができるので、私は、入力として、あなたの第2の画像を使用)

I = imread('NGC_0253.jpg'); 
I = im2bw(I,0.5); %the second parameter correspond to the threshold ∈ [0-1] 
I = ~bwareaopen(~I,400); %where 400 = the minimal number of connected pixel needed to not be removed. 

imshow(I) 

INPUT:

enter image description here

OUTPUT:

enter image description here

改善:

より正確には、楕円のパラメータを計算すると便利です。あなたはfileexchangeで利用できる機能fit_ellipseを使用することができることを行うには

enter image description here

Iedge = edge(mat2gray(I),'Canny'); 
[x,y] = find(Iedge'); 
hold on 
A = fit_ellipse(x,y,h); 
+0

速くて効果的です、私はそれが好きです! –

+0

これはまた除去する必要のない銀河の影を削除しました。 –

+0

@AnStudentあなたは 'level'を修正する必要があります。 ['im2bw'](https://de.mathworks.com/help/images/ref/im2bw.html)のドキュメントを参照してください。 – erfan

関連する問題