これがスターターです...円形のハフ変換を使用して円形の部分を見つけます。そのために、最初に画像をローカルでしきい値設定します。
im=rgb2gray(imread('Ly7C8.png'));
imbw = thresholdLocally(im,[2 2]); % thresold localy with a 2x2 window
% preparing to find the circle
props = regionprops(imbw,'Area','PixelIdxList','MajorAxisLength','MinorAxisLength');
[~,indexOfMax] = max([props.Area]);
approximateRadius = props(indexOfMax).MajorAxisLength/2;
radius=round(approximateRadius);%-1:approximateRadius+1);
%find the circle using Hough trans.
h = circle_hough(edge(imbw), radius,'same');
[~,maxIndex] = max(h(:));
[i,j,k] = ind2sub(size(h), maxIndex);
center.x = j; center.y = i;
figure;imagesc(im);imellipse(gca,[center.x-radius center.y-radius 2*radius 2*radius]);
title('Finding the circle using Hough Trans.');

円の内側にあるものだけを選択します。
[y,x] = meshgrid(1:size(im,2),1:size(im,1));
z = (x-j).^2+(y-i).^2;
f = (z<=radius^2);
im=im.*uint8(f);
編集:
ヒストグラムを見て、最初の極大値を見つけ、そこからbwlabelを使用して、2つの別々のセグメントが見つかるまで反復することにより、画像のしきい値を開始する場所を探します。
p=hist(im(im>0),1:255);
p=smooth(p,5);
[pks,locs] = findpeaks(p);
bw=bwlabel(im>locs(1));
i=0;
while numel(unique(bw))<3
bw=bwlabel(im>locs(1)+i);
i=i+1;
end
imagesc(bw);

これで、円から2つのラベルの付いた部分を取り出すことで中央部分を取得でき、残っているのは中央部分(+ハローの一部)になります。
bw2=(bw<1.*f);
しかし、いくつかの中央値フィルタリングの後、より合理的なものが得られます
bw2= medfilt2(medfilt2(bw2));
そして一緒に私たちは得る:
imagesc(bw+3*bw2);

最後の部分は本当の「迅速で汚い」です、私はあなたがすでに使用したツールであなたがより良い結果を得ると確信しています...