Matlabdaki görüntüdeki sayısal işlemleri kullanmadan önce neden gri seviyeleri ikiye dönüştürüyoruz? Bunu yapmak gerekli mi?Matlabdaki görüntüdeki sayısal işlemleri kullanmadan önce neden gri seviyeleri ikiye dönüştürüyoruz?
Q
Matlabdaki görüntüdeki sayısal işlemleri kullanmadan önce neden gri seviyeleri ikiye dönüştürüyoruz?
1
A
cevap
1
uint8
gibi tamsayı türleri MATLAB içinde saturated arithmetic'a sahiptir, ayrıca kayan nokta türleri belirli işlemler sırasında daha hassastır. Ayrıca, diğer yönde downcast olmaktan ötürü uint8
ile double
arasında olduğu söylenebilir.
Sadece bir örnek vermek gerekirse, bir 2 'lik bir güç yükseltiyoruz bir görüntünün dinamik aralığını değiştirmek istedim ki:
img = imread('peppers.png');
subplot(121), imshow(im2double(img).^2), title('double')
subplot(122), imshow(img.^2), title('uint8')
Sen nasıl görebilirsiniz uint8
image 255'te çoğu değerle doygun hale geldi.
Daha da fazlası, kesir üssü kullanarak tamsayı türleri için bir hata atar:
>> img.^(1.1);
Error using .^
Integers can only be raised to positive integral powers.
Bu, uint8'de aralık [0, 255] olduğu için aritmetik işlemler yapılırken aralığının taşma aritmetik işlemler yapmak için iki kat aralığında olmasına rağmen menzili taşabileceği anlamına gelir. –
@ZAFRANULLAH evet – Amro