2013-07-29 35 views
5

Tôi đang thực hiện dự án trong viễn thám. Làm việc với HDF trên MATLAB là rất dễ dàng. Nhưng tôi muốn thực hiện điều này với tính toán lưới (Ubuntu). Vì vậy, tôi đang cố gắng với quãng tám. Tôi có các tập tin chất diệp lục HDF4. Xử lý ảnh bình thường sẽ được thực hiện dễ dàng bằng quãng tám. Nhưng tôi muốn biết về hdfread, hdftool trong Octave. Tôi đã thêm một gói hình ảnh trong hình ảnh quãng tám. Bất cứ ai có thể cho tôi biết làm thế nào để đọc và làm thế nào để làm việc với dữ liệu hdf của. Có gói nào để thêm không. Xin vui lòng cho tôi biết về điều này.Cách đọc dữ liệu hdf trong Octave

  • Làm thế nào để đọc dữ liệu HDF
  • Làm thế nào để tải dữ liệu HDF
  • Làm thế nào để lấy hình ảnh từ dữ liệu HDF
+0

'hdfread' và' hdftool' chưa được triển khai trong Octave (Tôi đang xem phiên bản 3.6.4) ... –

Trả lời

2

Đối với HDF5, Octave có thể tải nó mà không cần gói bổ sung.

Đối với HDF4, bạn có thể chuyển đổi nó sang tệp NetCDF bằng cách sử dụng h4tonccf hoặc OPeNDDAP hdf4_handler, sau đó tải nó qua cuộc gọi NetCDF thông qua gói octcdf của Octave. Chúng tôi cung cấp một ví dụ hoàn chỉnh với đầy đủ Octave mã nguồn ở đây:

http://hdfeos.org/software/octave.php

dưới đây là một ví dụ NASA HDF4 âm mưu tạo ra bởi Octave qua OPeNDAP.

Octave's plot of NASA AIRS HDF4 product

+0

Cảm ơn bạn đã trả lời. – prabu

1

Các chức năng HDF cụ thể vẫn chưa được thực hiện trong Octave được nêu ra. Tuy nhiên, Octave có thể xử lý định dạng đó với lệnh load tiêu chuẩn hơn. Chỉ cần làm load path-to-hdf-file và bạn sẽ tải một cấu trúc trong bộ nhớ.

Xem các bài đăng này trên lưu trữ gửi thư trợ giúp: How to read HDF dataread data subsets from HDF5.

+0

Cảm ơn câu trả lời của bạn. Tôi đã làm điều này rồi. nhưng nó đi kèm với lỗi. Nếu octave hỗ trợ hdf4 và các hoạt động của nó, nó sẽ rất hữu ích cho tôi thay vì sử dụng MATLAB. – prabu

+0

@prabu bạn cần chỉ định lỗi bạn nhận được (và phiên bản Octave) nếu bạn muốn mọi người giúp bạn. – carandraug

0

Tôi tin rằng bạn có thể chuyển đổi dữ liệu hdf4 để hdf5 với appropriate conversion tools, ví dụ h4toh5.

Trong Octave, để tải một tập tin .h5 (cộng với kiểm tra) cũng đơn giản như:

octave:1> load secondhdf5.h5 
octave:2> whos 
Variables in the current scope: 

    Attr Name   Size      Bytes Class 
    ==== ====   ====      ===== ===== 
     dbldata  4x3       96 double 
     fltdata  4x3       96 double 
     intdata  4x3       48 int32 

Total is 36 elements using 240 bytes 

octave:3> size(dbldata) 
ans = 

    4 3 

Bằng cách này, các nội dung của 'secondhdf5.h5' như sau:

$ h5dump secondhdf5.h5 
HDF5 "secondhdf5.h5" { 
GROUP "/" { 
    DATASET "dbldata" { 
     DATATYPE H5T_IEEE_F64LE 
     DATASPACE SIMPLE { (3, 4)/(3, 4) } 
     DATA { 
     (0,0): 1.1, 1.2, 1.3, 1.4, 
     (1,0): 2.1, 2.2, 2.3, 2.4, 
     (2,0): 3.1, 3.2, 3.3, 3.4 
     } 
    } 
    DATASET "fltdata" { 
     DATATYPE H5T_IEEE_F32LE 
     DATASPACE SIMPLE { (3, 4)/(3, 4) } 
     DATA { 
     (0,0): 1.1, 1.2, 1.3, 1.4, 
     (1,0): 2.1, 2.2, 2.3, 2.4, 
     (2,0): 3.1, 3.2, 3.3, 3.4 
     } 
    } 
    DATASET "intdata" { 
     DATATYPE H5T_STD_I32BE 
     DATASPACE SIMPLE { (3, 4)/(3, 4) } 
     DATA { 
     (0,0): 1, 2, 3, 4, 
     (1,0): 5, 6, 7, 8, 
     (2,0): 9, 10, 11, 12 
     } 
    } 
} 
} 
1

Hỗ trợ HDF5 trong Octave < = 4.0 chỉ dành cho các tệp được viết bởi chính Octave, thông qua các hàm Simple File IO. Nó có nhiều nhược điểm nếu dữ liệu của bạn đến từ nơi khác, như nó không thể đọc một tập dữ liệu tùy ý, hoặc một phần của nó.

Tại thời điểm này, cho các chức năng tương thích đầy đủ hơn và Matlab mà đọc/ghi Datasets và Thuộc tính, thấy các module

https://github.com/stegro/hdf5oct

Edit: Tôi đóng góp vào dự án này.

+0

Vui lòng tiết lộ liên kết của bạn với dự án ở một nơi khác nếu không, bài đăng của bạn có thể được coi là quảng cáo hoặc spam có thể sai. – skuntsel

Các vấn đề liên quan