数字矩阵->图片

一:问题描述

收到小卿的一个求助,他得到一个 misc100.txt (提取码: c2d7) 文件,猜想是一幅图片,于是需要我将其还原成原图,至于目的和缘由不细究。

二:思路及实现过程

打开文件,看到的都是数字,逗号分隔。马上想到应该有很多数字 和矩阵 运算。于是决定采用matlab作为工具进行下一步。
load misc100.txt之后,发现是一个61366*3的矩阵,我们于是认为3列是一个RGB像素点,于是图片有61366 个像素点。我们于是就考虑 这些像素点 是怎么分布的,很幸运,61366 = 503 * 122 于是,我们将 前 122 个类似(255,255,255)的数据当做第一行,接下来 123-244个数据当做第二行,依次进行。后来证明这种想法 是正确的。
然后构造好所需的三维矩阵,显示,发现图片可以显示,但是,还需要镜面反射,对称,和旋转,所幸,这些过程 matlab都提供 了相应函数。具体的代码见下:

三:m文件:

%%
%说明:  
%1.运行环境:windows 7 + 32位机器 + matlab R2009b
%2.确保 misc100.txt 和 此m文件 在同一目录下
%带刺的银杏 2015.05.15 于 苏州 (大雨)
%%

clc;clear;
load misc100.txt
temp = misc100;     %temp是2维矩阵 61366*3.我们猜想 3代表RGB. 61366可能为长宽像素点的乘积。
A(1,1,1) = 0;
i = 0;
j = 0;

[pix,dimension] = size(temp); 	  %pix 为 61366 = 2 * 61 * 503 ;
if( dimension ~= 3)
    disp('输入维数不对!');
    return ;
end

width = 2*61;      %通过 factor(pix) 可知道大致了解图片的长宽信息。
height = 503 ;
for i = 1:height   % 将二位矩阵转化为三维矩阵,为了matlab识别
    for j = 1:width
        A(i,j,1) = temp(width*(i-1)+j,1);
        A(i,j,2) = temp(width*(i-1)+j,2);
        A(i,j,3) = temp(width*(i-1)+j,3);
    end
end

 A(:,:,1) = fliplr(A(:,:,1));  %图片做镜面反射
 A(:,:,2) = fliplr(A(:,:,2));
 A(:,:,3) = fliplr(A(:,:,3));
 
B(:,:,1) = A(:,:,1)';		%'图片旋转
B(:,:,2) = A(:,:,2)';		%'
B(:,:,3) = A(:,:,3)';		%'


for i = 1:62                %图片对称
    chg = B(i,:,:);
    B(i,:,:) = B(123-i,:,:);
    B(123-i,:,:)= chg;
end

P = uint8(B);  %图片显示
imagesc(P);

四.结果如下

这里写图片描述

五.小结

过程思路较为清楚,代码量较少,重点在猜想和摸索的过程,需要注意的是 镜面反射和对称,旋转的原理。当然,关于时间效率,比其他语言效率要高很多,还有一个想改进的地方,就是 将二位矩阵转化为三维矩阵 的时候,怎么将 二重循环 转化为 向量计算 仍然是一个 值得去 深究的问题,程序写的不到位的点 还望 收到您的建议和指导!

graph TD A[薄层沥青罩面层间增韧关键技术研究] --> B(研究内容) B --> B1["(1)原有路面快速升温方法研究"] B --> B2["(2)旧路面热学响应研究"] B --> B3["(3)热拼接层间粘结效果评价"] B --> B4["(4)关键施工工艺优化"] %% 第一阶段:快速升温技术研发 %% B1 --> C1["文献调研与技术筛选"] C1 --> C2["实验室小试平台搭建"] C2 --> C3["升温参数优化实验:<br>• 功率/距离/时间<br>• 温度场监测(热电偶+红外)<br>• 能耗与热损伤评估"] C3 --> C4["技术对比:红外/微波/热风/复合"] C4 --> C5["输出:优选升温方案与参数"] %% 第二阶段:热学响应机理 %% B2 --> D1["多因素试验设计:<br>• 材料组成/温度/含水率/环境"] D1 --> D2["精细化测温:<br>• 埋入式传感器阵列<br>• 红外热像仪动态监测"] D2 --> D3["热学响应规律分析:<br>• 温度梯度/均匀性/衰减速率"] D3 --> D4["数值模型构建与验证:<br>• COMSOL热传导模拟"] D4 --> D5["输出:热响应图谱+安全阈值"] %% 第三阶段:粘结性能科学评价 %% B3 --> E1["热拼接参数化试验:<br>• 界面温度/接触时间/压力"] E1 --> E2["多尺度性能测试:"] E2 --> E2a["• 力学性能:直剪/拉拔/斜剪(强度+韧性)"] E2 --> E2b["• 耐久性:水损害/冻融/疲劳试验"] E2 --> E2c["• 微观分析:SEM界面观测"] E2a & E2b & E2c --> E3["数据建模:工艺参数-性能关系"] E3 --> E4["输出:粘结效果评价方法体系"] %% 第四阶段:施工工艺集成 %% B4 --> F1["工艺链优化实验:"] F1 --> F1a["• 界面处理:清理+粘层油优化"] F1 --> F1b["• 混合料设计:高温稳定性保障"] F1 --> F1c["• 摊铺压实:参数正交试验"] F1a & F1b & F1c --> F2["试验路验证:<br>• 压实度+粘结强度+平整度检测"] F2 --> F3["质量控制标准:<br>• 关键指标阈值+无损检测技术"] F3 --> F4["输出:《层间增韧施工工艺规程》"] %% 逻辑闭环与成果转化 %% C5 --> D1 & E1 & F1 %% 升温方案指导热响应/粘结/工艺研究 D5 --> E1 & F1 %% 热响应规律指导粘结与工艺 E4 --> F1 %% 粘结评价结果反馈工艺优化 F4 --> G["工程应用验证"] G --> H["技术推广与标准编制"] style A fill:#2c3e50,stroke:#34495e,color:white,fontsize:15px style B fill:#3498db,stroke:#2980b9 style B1 fill:#16a085,stroke:#1abc9c style B2 fill:#27ae60,stroke:#2ecc71 style B3 fill:#f39c12,stroke:#f1c40f style B4 fill:#d35400,stroke:#e67e22我想用MATLAB把这个技术路线图画出来,帮我修改代码,使得其能够在MATLAB中运行
最新发布
07-18
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值