在利用matlab處理影象時務必慎用abs函式
阿新 • • 發佈:2019-01-07
先看下面程式:
clear
clc
cd('C:\Documents and Settings\Administrator\桌面');
I = imread('pig.jpg');
B = I(:, :, 3);
a = 200
b = 220
c = B(100, 100)
d1 = abs(a - c)
d2 = abs(c - b)
結果為:
a =
200
b =
220
c =
208
d1 =
0
d2 =
0
為什麼d1, d2都為0呢? 因為c是uint8型別的,所以一定要注意這一點,在matlab中用whos命令查閱一下c, 便有:
Name Size Bytes Class Attributes
c 1x1 1 uint8
所以,上面的程式應該改為:
clear clc cd('C:\Documents and Settings\Administrator\桌面'); I = imread('pig.jpg'); B = I(:, :, 3); a = 200 b = 220 c = B(100, 100) d1 = abs(a - double(c)) d2 = abs(double(c) - b)
結果為:
a =
200
b =
220
c =
208
d1 =
8
d2 =
12