答えて
私は画像に既に注釈がついていると仮定しています。この場合、マークされた点を見つけて座標を抽出するだけです(コードを使って赤い点を動的に見つける必要がある場合、これはまったく機能しません)
最初に行うべきことは、セグメンテーションに使用します。コードと詳細については、私のSO答えはこちらwhat-should-i-use-hsv-hsb-or-rgb-and-whyを参照してください。良い候補色空間である我々はその彩度(およびいくつかの他を)見ることができます
:それは次のような画像が生成されます。それでは、新しい色空間にイメージを転送し、ポイントを見つけるために閾値処理を行う必要があります。
ポイントは、重心を具体的に探してmatlab's region propertiesを使用して取得されます。その時点であなたは完了です。ここ
は完全なコードであり、
im = imread('http://i.stack.imgur.com/eajRb.jpg');
HUE = 1;
SATURATION = 2;
BRIGHTNESS = 3;
%see https://stackoverflow.com/questions/30022377/what-should-i-use-hsv-hsb-or-rgb-and-why/30036455#30036455
ViewColoredSpaces(im)
%convert image to hsv
him = rgb2hsv(im);
%threshold, all rows, all columns,
my_threshold = 0.8; %determined empirically
thresh_sat = him(:,:,SATURATION) > my_threshold;
%remove small blobs using a 3 pixel disk
se = strel('disk',3');
cleaned_sat = imopen(thresh_sat, se);% imopen = imdilate(imerode(im,se),se)
%find the centroids of the remaining blobs
s = regionprops(cleaned_sat, 'centroid');
centroids = cat(1, s.Centroid);
%plot the results
figure();
subplot(2,2,1) ;imshow(thresh_sat) ;title('Thresholded saturation channel')
subplot(2,2,2) ;imshow(cleaned_sat);title('After morpphological opening')
subplot(2,2,3:4);imshow(im) ;title('Annotated img')
hold on
for (curr_centroid = 1:1:size(centroids,1))
%prints coordinate
x = round(centroids(curr_centroid,1));
y = round(centroids(curr_centroid,2));
text(x,y,sprintf('[%d,%d]',x,y),'Color','y');
end
%plots centroids
scatter(centroids(:,1),centroids(:,2),[],'y')
hold off
%prints out centroids
centroids
重心結果=
7.4593
435.3106 355.9255 494.6491 91.1491
.0000
383.0000 87.9911 0
グレートコーディング(y) – 16per9
赤い点はイメージにはありません。 –
いくつかのサンプルコードでは、特定のソリューションを問題に合わせる方がずっと簡単です。
この一般的な問題の1つの解決策は、impoint
です。
h = figure();
ax = gca;
% ... drawing your image
points = {};
points = [points; impoint(ax,initialX,initialY)];
% ... generate more points
indx = 1 % or whatever point you care about
[currentX,currentY] = getPosition(points{indx});
よう
何かがトリックを行う必要があります。
編集:impoint
の最初の引数は、図形オブジェクトではなく軸オブジェクトです。
私には役に立たない –
- 1. Celery(Django)でスケジュールされた定期的なタスクの次の実行時間を確認してください
- 2. 実行時にGCCのバージョンを確認してください
- 3. 月ごとにソートされた星座を確認してください
- 4. 時間の範囲が時間範囲内であることを確認してください。
- 5. iphone uiautomationのテキストの色を確認してください
- 6. Crashlyticsの正確なクラッシュ時間を確認してください
- 7. バッチスクリプトでインストールされたプログラムを確認してください
- 8. Rails 5 APIの起点を確認してください
- 9. QSharedMemoryの変更点を確認してください
- 10. ifステートメントの背景色を確認してください
- 11. ノード赤色のパレットに「ファイルノード」をインストールしてください
- 12. linuxで実行されているMATLABスクリプトを確認してください
- 13. avaudioplayerの現在の再生時間を確認してください
- 14. ピンの電圧を確認してLEDを点灯させてください
- 15. SQL文が実行されたことを確認してください
- 16. Apache Passengerデプロイメントで確認してください:モデル内のレールアクセスセッション
- 17. WinJS:デバッグモードで実行されているか確認してください
- 18. プロセスがシェルスクリプトで実行されているか確認してください。
- 19. 2秒間の差を確認してください
- 20. ドアDXLモジュール間のリンクを確認してください
- 21. ループバック内のアクセストークンの検証を確認してください
- 22. 実行時にKendoPanelの色を変更してください
- 23. 地図上の座標を変更してください
- 24. Webdriver。キャンバス要素を座標でクリックしてください。
- 25. Rails 4 - 少なくとも1つのチェックボックスがループ内でネストされた形式でチェックされていることを確認してください。
- 26. 赤い色の線で座標を取得するには
- 27. いつでもサイトの負の数で色を赤にしてください
- 28. 与えられたX座標とY座標を円の中間点として円を描く方法は?
- 29. ブランチが実行されていることを確認してください。
- 30. すべての時間が4時間オフセットされるように日付を変更してください。
リアルタイムとは何ですか? –