Sim*_*our 3 matlab image image-processing
我想.raw在MATLAB中打开并读取图像.我的文件可以在这里下载.我尝试了以下三个代码片段,但都没有给出预期的结果.
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);
Run Code Online (Sandbox Code Playgroud)
它显示了这张图片:

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');
Run Code Online (Sandbox Code Playgroud)
这样可以以.jpg格式保存空白(仅白色)图像.
id = fopen('m-001-1.raw', 'r');
x = fread(id, [576,768], 'short');
Run Code Online (Sandbox Code Playgroud)
当我使用时imshow(x),这张照片显示:

如何正确阅读此图片?
您的行/列大小相反.由于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)
Run Code Online (Sandbox Code Playgroud)
图像复制正在发生,因为每行短768-576 = 192像素,因此每行都会逐渐关闭该行.在4行之后,你已经弥补了差异(4*192 = 768),因此你有一个4图像复制.