——前言——
例外運算分為兩種:計算結果溢位和計算結果型別無效,
①計算結果溢位:
很多影像,eg:灰度圖、索引色圖、二值影像或有限位真彩色影像,其像素都是都范圍限制的,我們在執行多幅圖的加減乘除運算時,計算結果很可能會超過有限值范圍,例如,兩幅256色灰度圖在做減法運算時,結果可能為負數;執行加法運算時,像素超過255,這些都屬于計算結果溢位,
②計算結果型別無效:
影像資料有很多型別,當我們用uint8,uint16這樣像素要求是整數的影像進行除法運算時,結果可能是分數,這是因為影像代數操作函式執行運算時,往往將資料看為double型別,
例外計算結果的修正遵循兩個原則:
①超過整數型別有效范圍的結果直接截斷到限定范圍的端點處,
【用uint8作為條件舉例】
eg:理論結果是 -12,修正后是0;理論結果是687,修正結果是255.
②對分數計算進行四舍五入,
現在通過示例來演示某圖通過加減得到的新影像的運算結果,
例:利用矩陣加法運算增加或減少影像中某種顏色的成分,
clear all;
a=imread(‘C:\圖片\qiqi.png’);
s=size(a);
b=double(a);
c(:,:,1)=b(:,:,1)+b(:,:,2);
c(:,:,2)=b(:,:,2);
c(:,:,3)=b(:,:,3)-b(:,:,2);
for i=1:s(1)
for j=1:s(2)
for k=1:s(3)
if c(i,j,k)<0
c(i,j,k)=0;
end
if c(i,j,k)>255
c(i,j,k)=255;
end
end
end
endc=uint8( c );
subplot(121);imshow(a);
subplot(122);imshow( c );
結果:
tip:matlab A=(:,1) 和 T =(:,:,1)是什么意思?
A(x,y)表示二維矩陣第x行第y列位置的元素,x為:則表示所有的行,因此,A(:,1)就表示A的第1列的所有元素,這是一個列向量,
T =(:,:,1) :matlab T=(:,:,1)代表第一維、第二維的所有資料,第三維的第一個,
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/198782.html
標籤:其他
