使用matlab使图片生成.mif文件


前言

在使用fpga进行显示图片时,需要使用ROM IP核来进行图片的mif文件储存,本文将使用matlab生成图片的mif文件


一、生成步骤

1. 对图片大小进行处理

使用电脑自带画图软件,对图片像素大小进行改变,改变为想要的大小
在这里插入图片描述

2. 在matlab中新建文件夹

文件夹里放入图片文件,.bmp格式的图片

在这里插入图片描述

3. 输入代码生成mif文件

clear               %清理命令行窗口
clc                 %清理工作区

% 使用imread函数读取图片,并转化为三维矩阵
image_array = imread('picture.bmp');

% 使用size函数计算图片矩阵三个维度的大小
% 第一维为图片的高度,第二维为图片的宽度,第三维为图片维度
[height,width,z]=size(image_array);   % 100*100*3
red   = image_array(:,:,1); % 提取红色分量,数据类型为uint8
green = image_array(:,:,2); % 提取绿色分量,数据类型为uint8
blue  = image_array(:,:,3); % 提取蓝色分量,数据类型为uint8

% 使用reshape函数将各个分量重组成一个一维矩阵
%为了避免溢出,将uint8类型的数据扩大为uint32类型
r = uint32(reshape(red'   , 1 ,height*width));
g = uint32(reshape(green' , 1 ,height*width));
b = uint32(reshape(blue'  , 1 ,height*width));

% 初始化要写入.mif文件中的RGB颜色矩阵
rgb=zeros(1,height*width);

% 导入的图片为24bit真彩色图片,每个像素占用24bit,RGB888
% 将RGB888转换为RGB565
% 红色分量右移3位取出高5,左移11位作为ROM中RGB数据的第15bit到第11bit
% 绿色分量右移2位取出高6,左移5位作为ROM中RGB数据的第10bit到第5bit
% 蓝色分量右移3位取出高5,左移0位作为ROM中RGB数据的第4bit到第0bit
for i = 1:height*width
    rgb(i) = bitshift(bitshift(r(i),-3),11)+ bitshift(bitshift(g(i),-2),5)+ bitshift(bitshift(b(i),-3),0);
end

fid = fopen( 'image.mif', 'w+' );

% .mif文件字符串打印
fprintf( fid, 'WIDTH=16;\n');
fprintf( fid, 'DEPTH=%d;\n\n',height*width);

fprintf( fid, 'ADDRESS_RADIX=UNS;\n');
fprintf( fid, 'DATA_RADIX=HEX;\n\n');

fprintf(fid,'%s\n\t','CONTENT');
fprintf(fid,'%s\n','BEGIN');

% 写入图片数据
for i = 1:height*width
    fprintf(fid,'\t\t%d\t:%x\t;\n',i-1,rgb(i));
end

% 打印结束字符串
fprintf(fid,'\tEND;');

fclose( fid ); % 关闭文件指针

注意第三行代码,写着图片文件的文件名,需要填入保存的图片的文件名

4.文件生成

写入代码然后回车就已经在文件夹中生成了mif文件了
在这里插入图片描述


  • 3
    点赞
  • 34
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值