日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

比double精度更高的数据类型_MATLAB中图像的数据类型

發布時間:2023/12/19 编程问答 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 比double精度更高的数据类型_MATLAB中图像的数据类型 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一.幾種圖象的數據類型。

表中羅列了常見的數據類型及其含義:

輸入圖像,指定為數值標量、向量、矩陣或多維數組。

1.如果 I 是灰度或真彩色 (RGB) 圖像,它可以是 uint8、uint16、double、logical、single或 int16。

2.如果 I為索引圖像,它可以是 uint8、uint16、double 或 logical。

3.如果 I為二值圖像,它必須是 logical。

二.matlab圖像的存儲數據類型。

imread函數把灰度圖像存入了一個八位矩陣,如果是RGB圖像,就存入8位RGB矩陣中。這個八位矩陣的每一個元素都是一個圖片中的像素,由于這種矩陣一般占用的頁面較大,這里我們用size函數來查詢一幅圖像的大小,例如:

>> [M,N]=size(BW)M =258 N =350

因為我們前面的圖片是灰度圖,所以返回了一個M×N矩陣。

函數whos可以顯示出一個矩陣的附加信息:

>> f=imread('abc.jpg'); >> whos fName Size Bytes Class Attributesf 107x97x3 31137 uint8

由此可見,matlab讀入圖像的數據是uint8的變量存儲為 1 個字節(8 位)的無符號整數,而matlab中數值一般采用double型(64位)進行存儲和運算,所以要先把圖像轉換為double格式的才能運算。

注意:二值圖像在matlab中具有非常重要的意義,一幅二值圖像是一個取值只有0和1的邏輯數組。所以一個取值只包含0和1的uint8類數組,在matlab中不認為是二值圖像,為了解決這個問題,我們使用logical函數可以把數值數組轉換拿為二值數組,因此,若A是一個由0和1構成的數值數組,則可以用如下的語句創建一個邏輯數組B:

>> B=logical(f); >> whos fName Size Bytes Class Attributesf 107x97x3 249096 double

可以看到這時候的數據類型為double精度類型。若A中含有除了0和1以外的其他元素,則使用logical函數可以將所有非0的量變換為邏輯1。

三.幾種數據類型的轉換

1.把圖像數組轉換成double精度類型。

這里用到了im2double 函數,例子如下:

>> f=im2double(f); >> whos fName Size Bytes Class Attributesf 107x97x3 249096 double

可見我們已經成功的完成了數據類型的轉換。

2.將圖象數組轉換成int8類型

這里用im2int8函數:

I =reshape(uint16(linspace(0,65535,25)),[5 5]) %創建 uint16 類的數組 I =5×5 uint16 矩陣0 13653 27306 40959 546132731 16384 30037 43690 573435461 19114 32768 46421 600748192 21845 35498 49151 6280410923 24576 38229 51882 65535 I2 = im2uint8(I) %將數組轉換為 uint8 類。 I2 =5×5 uint8 矩陣0 53 106 159 21311 64 117 170 22321 74 128 181 23432 85 138 191 24443 96 149 202 255

輸入whos查看

>> whos I2Name Size Bytes Class AttributesI2 5x5 25 uint8

3.將圖像數組轉換成unit16類型

用im2uint16函數:

I = reshape(linspace(0,1,20),[5 4]) %創建 double類的數組 I =0 0.2632 0.5263 0.78950.0526 0.3158 0.5789 0.84210.1053 0.3684 0.6316 0.89470.1579 0.4211 0.6842 0.94740.2105 0.4737 0.7368 1.0000 I2 = im2uint16(I) %將數組轉換為 uint16 類。 I2 = 5x4 uint16 matrix0 17246 34492 517383449 20695 37941 551876898 24144 41391 5863710348 27594 44840 6208613797 31043 48289 65535

輸入whos查看

>> whosName Size Bytes Class AttributesI 5x4 160 double I2 5x4 40 uint16

歡迎大家關注我,以后會持續更新MATLAB相關文章

總結

以上是生活随笔為你收集整理的比double精度更高的数据类型_MATLAB中图像的数据类型的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。