image - 如何在 MATLAB 中读取 RAW 图像?

标签 image matlab image-processing

我想在 MATLAB 中打开并读取 .raw 图像。我的文件可以是downloaded here .我尝试了以下三个代码片段,但都没有给出预期的结果。

代码片段 #1

    row=576;  col=768;
    fin=fopen('m-001-1.raw','r');
    I=fread(fin,row*col,'uint8=>uint8'); 
    Z=reshape(I,row,col);
    Z=Z';
    k=imshow(Z);

它显示了这张图片:

first

代码片段#2

    f=fopen('m-001-1.raw');
    a=fread(f);
    input_img = reshape(a,768, 576, 3);
    input_img = imrotate(input_img, -90);
    imwrite(input_img, 'm-001-1.jpg'); 

这将以 .jpg 格式保存空白(纯白色)图像。

代码片段#3

    id = fopen('m-001-1.raw', 'r');
    x = fread(id, [576,768], 'short');

当我使用imshow(x)时,这张图片显示:

third

如何正确阅读这张图片?

最佳答案

您的行/列大小颠倒了。由于 MATLAB 数组是列优先的,而光栅图像通常是按行优先存储的,因此您需要将图像读取为 [col row] 矩阵,然后对其进行转置。

row=576;  col=768;
fin=fopen('m-001-1.raw','r');
I=fread(fin, [col row],'uint8=>uint8'); 
Z=I';
k=imshow(Z)

图像复制正在发生,因为您每行短 768-576 = 192 像素,因此每行逐渐偏离该数量。在 4 行之后,您已经弥补了差异 (4*192 = 768),因此您有一个 4 图像复制。

关于image - 如何在 MATLAB 中读取 RAW 图像?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25667140/

相关文章:

image - 二值图像过滤器细连续线

python - 在没有管理员权限的情况下安装 Python/Matlab 库?

python - 如何计算2个红色像素之间的距离

python - python 正数的对数结果为负无穷大

java - 线程 "main"中出现异常,Picture.java 和 PictureTester.java 中的mirrorHorizo​​ntal 类?

css - 为什么我不能在 IE7 中单击带有嵌套图像的链接?

JQuery 图像选择器事件 - 幻灯片放映

performance - 对变量执行操作并将其分配给同一个变量

matlab - 查找黑色方 block 的 x 和 y 坐标 - Matlab

python - 尝试规范化 Python 图像时出现错误 - RGB 值必须在 0..1 范围内