Matlab讀取pfm檔案

2021-08-08 16:25:11 字數 2061 閱讀 1666

原文**:

關於pfm格式,從來沒有官方權威的定義,但是常常在一些場合用到,如生物醫學成像,紅外成像等,尤其是其浮點方式的儲存的點陣圖使得其在科研和學習場合應用都很方便,middlebury資料庫中的視差影象就是以pfm格式進行儲存的。

一、pmf格式

pmf格式主要有兩部分組成:頭、元資料。

頭有三行:

第一行,標識灰度、彩色的頭,pf代表彩色三通道,pf代表灰度單通道。

第二行,標識影象大大小,行-列。

第三行,標識數,正數標識大端儲存,負數標識小端儲存,其絕對值為scale。

元資料:

就是緊密排列的浮點數,每個四位元組,總體來數,就是和bmp點陣圖很像。

二、pmf格式檔案的檢視

推薦一款工具cvkit,非常好用,還可以直接處理middleburry雙目影象生成立體圖

三、matlab讀寫pmf檔案

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

functiond=

pfmread

(filename_pfm)

fid=

fopen

(filename_pfm);

fscanf

(fid

,'%c',[

1,3]

);cols

=fscanf

(fid

,'%f',1

);rows

=fscanf

(fid

,'%f',1

);fscanf

(fid

,'%f',1

);fscanf

(fid

,'%c',1);d

=fread

(fid,[

cols

,rows],

'single');

d(d==inf)=0;d

=rot90(d

);fclose

(fid);

function

pfmwrite(d

,filename)

%assert

(size(d

,3)==

1&(isa(d

,'single'))

);[rows

,cols]=

size(d

);scale=-

1.0/

max(

max(d)

);fid

=fopen

(filename

,'wb');

fprintf

(fid

,'pf\n');

fprintf

(fid

,'%d %d\n'

,cols

,rows);

fprintf

(fid

,'%f\n'

,scale);

%fscanf

(fid

,'%c',1

);fwrite

(fid,d

(end:-

1:1,

:)', '

single'

); fclose

(fid);

end

MATLAB讀取檔案 儲存檔案

學習各種文獻 常見的開啟方式如下 r 唯讀方式開啟檔案 預設的方式 該檔案必須已存在。r 讀寫方式開啟檔案,開啟後先讀後寫。該檔案必須已存在。w 開啟後寫入資料。該檔案已存在則更新 不存在則建立。w 讀寫方式開啟檔案。先讀後寫。該檔案已存在則更新 不存在則建立。a 在開啟的檔案末端新增資料。檔案不存...

matlab讀取mat檔案

今天無意中用到了 mat檔案,用matlab讀取後要和另乙個矩陣相乘,結果一直出錯。顯示 mat格式資料為struct,而不能和數字矩陣相乘。最後用兩個matlab命令將之轉化為矩陣。h load mat 這樣顯示錯誤 要用如下命令代替這一命令 h load mat h cell2mat struc...

matlab讀取xml檔案

xml檔案 後面的是注釋,可刪除 輸入引數 outputtype 引數名 0 引數 輸入檔案路徑 這裡是 d acode areef change detection geotiff yx2015.tif 注意 之間不要空格 d acode areef change detection geotif...