open a 24-bit depth interleaved RGB RAW file
7 ビュー (過去 30 日間)
古いコメントを表示
Using fread, how do i open a RAW file? which is of size m*n*3 ?
i realise a lot of questions have been asked already but no clear answer exists.
0 件のコメント
回答 (2 件)
Walter Roberson
2013 年 9 月 11 日
No clear answer exists because RAW format is different for each manufacturer (and possibly different between models as well.)
4 件のコメント
Walter Roberson
2013 年 9 月 17 日
No, RAW files can have any internal structure that the manufacturer wants. It is not necessarily a simple rectangular array of pixel values with a header before it. The readings for each individual sensor might be included, but in most cameras there is not one physical sensor for each R, G, B: some of the sensors are shared between adjacent pixels, and that could be stored in the file in arbitrary ways.
.RAW is any private internal format that the manufacturer cares to use.
Image Analyst
2013 年 9 月 24 日
Try this:
rgbImage = fread(fileHandle, [x_size, y_size, 3], '*uint8');
Does that work? If not, try reading it in as 1D and then extract
rgbImage = fread(fileHandle, (x_size * y_size * 3), '*uint8');
redChannel = reshape(rgbImage(1:3:end), [y_size, x_size]);
greenChannel = reshape(rgbImage(2:3:end), [y_size, x_size]);
blueChannel = reshape(rgbImage(3:3:end), [y_size, x_size]);
rgbImage = cat(3, redChannel, greenChannel, blueChannel);
2 件のコメント
Walter Roberson
2013 年 9 月 24 日
If the pattern is RGBRGBRGB then you need to fread() [3, x_size, y_size], and then permute() [2 3 1]
However, if the image is row-scanned instead of column-scanned, then fread() [3, y_size, x_size) and permute() [3 2 1]
Image Analyst
2013 年 9 月 24 日
Thanks for clarifying that. If they followed the BMP style, the data would be stored BGRBGRBGR..... So if the colors don't look right, then try swapping the red and blue channels.
参考
カテゴリ
Help Center および File Exchange で Blue についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!