2015-10-16 39 views
0

我有一個-constant-image上的P點的像素位置,對於T迭代的算法,所以locations = [T x 2*P] double如何在MATLAB中對圖像上的點進行動畫處理?

現在我想創建一個動畫,在其中繪製圖像,然後繪製點,暫停N秒,並將其位置更新爲下一步。我不知道是否有標準的方法。我想,我需要這樣的東西:

figure; 
imshow(img); 
hold on; 
for t=1:T 
    anim = updatePlot(locations(t,:), anim); % ? 
end 

我怎樣才能實現這個功能updatePlot

感謝您的幫助!

+0

在每次更新時,是否只想顯示當前點集,或者是否希望以前看到的所有點直到顯示當前點?具體來說,假設我們在't-1'時刻有一個點。在't'時刻,你是否希望't-1'時刻的點消失,只有時間點't'的點纔可見? – rayryeng

+0

我只想'點(t,:)'出現,是的,我想要刪除之前的那些。但是,如果我可以添加轉場效果(如淡入淡出或插值),這也可以是非常好的,這將是一個項目演示,以儘可能「漂亮」:) – jeff

回答

1

您可以通過幾種不同的方法來做到這一點。第一個辦法是給繪製點句柄,這樣就可以在下一次迭代之前將其刪除:

figure 
imshow(img); 
hold on; 
for t = 1:T 
    % delete the previous points plotted (skip t = 1 since they won't exist) 
    if t > 1 
     delete(hPoints); 
    end 
    hPoints = plot(xLocations(t,:),yLocations(t,:),'.'); 
    getframe; 
    pause(N); 
end 

(我不清楚自己是如何分析你的位置沿每一行的X和Y分離部件,所以我只是用xLocationsyLocations代表這些值)

第二種方法是重新繪製在每次迭代整個圖像。

figure 
for t = 1:T 
    clf; 
    imshow(img); 
    hold on; 
    plot(xLocations(t,:),yLocations(t,:),'.'); 
    getframe; 
    pause(N); 
end 

注意imshow可能會有自己的getframe效果,以便在繪製點之前看到圖像閃爍 - 如果發生這種情況,請從imshow切換爲image

+0

非常感謝Brian。手柄可能是我期待的。但我想知道我們是否也可以添加過渡效果。無論如何,我接受你的答案,但未來的用戶:請不要猶豫,建議過渡方式。 – jeff

+0

你是什麼意思?你的評論讓我意識到我忘記了包括暫停N秒,這可以使用'暫停(N)'完成 - 我已經適當地編輯了答案。你在尋找什麼樣的過渡效果? –

+0

我不確定其實:)我只是想做一個很好的演示/演示。一個基本的事情可能是「點(t)」淡出,「點(t + 1)」淡入。或者每個點可以逐漸「移動」到下一個位置。只是爲了讓人們更好地觀察過程。 – jeff

相關問題