2012-04-22 68 views
0

我試着寫我上取樣的照片(灰度值的矩陣)一個matlab功能。實際上它並不是非常複雜,但我仍然設法做錯了。 我的目標是它通過因子2和一開始我只是想看看我的增大尺寸的圖片調整其大小。我想用零填補空白,因此每第二行/列都填滿了零。 當我做,我不知道爲什麼我看到的只是像素的灰色的海洋。我希望能夠認識我的照片中的至少一些東西。採樣在MATLAB

這裏是我的功能,沒有人看到我的錯誤?

function [upsampled] = do_my_upsampling(image) 
    [X Y] = size(image); 
    upsampled = zeros(X*2, Y*2); 
    upsampled(1:2:end, 1:2:end) = image(1:1:end, 1:1:end); 
end 
+0

你是如何可視化的結果?矩陣的大小是你期望的嗎? 'length(find(upsampled == 0))'的值怎麼樣?換句話說,你試過了什麼? – tmpearce 2012-04-22 21:53:01

+0

這是196608,這似乎工作? – user867204 2012-04-23 07:38:34

+1

從你的問題中,我認爲,你想重新創建這個功能出於某種原因。以防萬一您不知道這一點:您可以使用impyramid()函數對圖像進行採樣。 – 2012-04-23 11:43:17

回答

3

您的代碼工作正常,我(與image = rand(100);。但是,這不是一個很Matlab的方式來實現的結果。

如果你只是想攤開你的像素,你爲什麼不直接做索引?

[nRows,nCols] = size(image); 
upsampled = zeros(2*nRows,2*nCols); 
upsampled(1:2:end,1:2:end) = image; 
+0

Thx的提示,我現在使用更新後的版本,但沒什麼區別,你已經指出。 我正在使用Lena圖片進行測試。我縮減它(這是有效的,如果我顯示它,我看到萊納在一半的大小)。如果我上採樣下采樣圖片,我無法識別任何東西。 我檢查了索引值,它們在那裏被零行/列分開。我用低通濾波器試了一下,但後來我的照片變成了白色的方形。 – user867204 2012-04-23 07:40:25

-1

嘗試imshow(image,[])

,或者爲你的形象是一個雙,將其轉換成UINT8,然後再顯示即

imshow(uint8(image))