2010-12-20 93 views
3

,當我寫這些命令MATLAB RGB值兩難

out = ones(size(ben)) 
imshow(out) 

輸出是一個白色畫面,但我期待幾乎一團漆黑,因爲RGB值1,1,1。當我給255,255,255時,它也會給出一張白色圖片。這不是一個困境嗎?

回答

3

嘗試out = ones(size(ben), 'uint8');

ones()默認創建雙打的陣列。當imshow()獲得一個雙精度數組時,它假定像素值的範圍介於0和1之間,並將白色分配給大於1的任何值。但是,如果將uint8的數組傳遞給imshow(),它將假定範圍在0和255.

您也可以嘗試使用imagesc();而不是imshow(),但您可能需要在病房後執行colormap gray以獲取灰度圖像。

另一種選擇是在顯示之前重新縮放圖像:

imshow(out/max(out(:))); 
+2

實際上,在一個8位圖像時,值從0到255也行,以顯示縮放後的圖像,則可以調用'imshow (out,[])' – Jonas 2010-12-21 01:11:11

+0

好點!我總是試着記住Matlab使用基於1的數組索引,而且我猜這次我已經過分了...... :) – Dima 2010-12-21 05:24:53