如何使用 Matlab 从星系 FITS 图像中移除星星和其他物体?
How to remove stars and other objects from a galaxy FITS image using Matlab?
我有以下适合格式的图片。我想使用 matlab 从该图像中删除所有星星和其他较小的点。
我执行了以下 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)
我得到的图像是这样的:
我也尝试了以下方法:
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)
但也不能满足我:
这不是我的 objective。我的 objective 是从图像中删除所有星星。
那么,我应该怎么做才能从图像中移除所有使星系完好无损的恒星?
通过使用 bwareaopen
我得到了一个很好的结果。 (我使用你的第二张图片作为输入,所以你可以保留你的代码的第一部分)
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)
输入:
输出:
改进:
更准确地说,计算椭圆的参数可能很有用。
为此,您可以使用 fileexchange 上可用的函数 fit_ellipse
。
Iedge = edge(mat2gray(I),'Canny');
[x,y] = find(Iedge');
hold on
A = fit_ellipse(x,y,h);
我有以下适合格式的图片。我想使用 matlab 从该图像中删除所有星星和其他较小的点。
我执行了以下 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)
我得到的图像是这样的:
我也尝试了以下方法:
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)
但也不能满足我:
这不是我的 objective。我的 objective 是从图像中删除所有星星。
那么,我应该怎么做才能从图像中移除所有使星系完好无损的恒星?
通过使用 bwareaopen
我得到了一个很好的结果。 (我使用你的第二张图片作为输入,所以你可以保留你的代码的第一部分)
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)
输入:
输出:
改进:
更准确地说,计算椭圆的参数可能很有用。
为此,您可以使用 fileexchange 上可用的函数 fit_ellipse
。
Iedge = edge(mat2gray(I),'Canny');
[x,y] = find(Iedge');
hold on
A = fit_ellipse(x,y,h);