3
我正在matlab編程類,而老師讓我們總是寫爲什麼在matlab中讀取圖像時必須使用double?
img = double(imread('file.tif'));
而不是
img = imread('file.tif');
,因爲省略了double(...)
很可能「錯誤」。我很困惑爲什麼會出現這些錯誤。
這裏就是我把每一個像素(注意 - 輸入圖像的灰度)的平方值爲例交互式會話,並且該值是唯一正確的,當我們使用雙:
>> img = imread('cat.tif');
>> img_double = double(imread('cat.tif'));
>> img = img .^2;
>> img_double = img_double .^2;
>> img(1:10, 1:10)
ans =
255 255 255 255 255 255 255 255 255 255
225 255 255 255 255 255 255 255 255 255
255 255 255 255 255 255 255 255 255 255
255 255 255 255 255 255 255 255 255 255
255 255 255 255 255 255 255 255 255 255
255 255 255 255 255 255 255 255 255 255
255 255 255 255 255 255 255 255 255 255
255 255 255 255 255 255 255 255 255 255
255 255 255 255 255 255 255 255 255 121
255 255 255 255 255 255 255 255 255 49
>> img_double(1:10, 1:10)
ans =
Columns 1 through 5
16129 16129 16129 16129 16129
225 361 625 1089 1681
324 484 961 1681 2209
400 729 1369 2401 3025
576 1225 2209 3249 3969
900 1849 3025 4096 4900
1369 2809 4096 5184 5625
2209 3969 5476 6241 6241
3249 5041 6400 7056 6724
4489 6241 7569 7569 6724
Columns 6 through 10
16129 16129 16129 16129 16129
2025 2209 2209 1849 1521
2809 2809 2401 2025 1521
3249 3249 2809 2025 1369
3969 3481 2809 1849 1089
4624 3969 2809 1681 841
5041 3969 2601 1369 529
5184 3721 2209 961 289
5184 3481 1681 576 121
5041 2809 1225 289 49
這究竟是爲什麼?
最大值你的教練確實應該給你比*將導致錯誤*更好的解釋。你正在上課去學習,而不是記住魔術食譜。下面的答案解釋了爲什麼你需要做演員,但如果我是你,我還是會要求導師解釋。如果沒有別的,這將是衡量他/她是否知道自己的原因。 – Praetorian 2013-03-26 03:17:37
沒有將圖像轉換爲double是matlab圖像處理中常見的錯誤。嘗試輸入'1.7 + uint8(5)',看看你得到了什麼結果。 Matlab會自動將答案轉換爲uint8。 – Justin 2013-03-26 03:43:12