鱼C论坛

 找回密码
 立即注册
查看: 710|回复: 0

[学习笔记] MATLAB灰度图打印

[复制链接]
发表于 2024-11-5 21:15:48 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 峥途 于 2024-11-5 21:37 编辑

这次分享的是用MATLAB进行灰度图的打印(就是给了一个m个样本每个样本n个特征的X矩阵文件,打印出来原始的图像)。
我读取的图像数据库是7M的,无法上传,大家可以自己试试别的图像的矩阵特征文件
我学习的事GIthub上的一个大佬的,但是他这里有一点小小的错误,我捉摸了一下午才发现不是我没理解,是他写错了
代码如下:
  1. %% 灰度图显示练习2
  2. %% 清除
  3. clear;close all;clc;
  4. %% 读取
  5. load('ex3data1.mat');
  6. randIndex = randperm(size(X,1));
  7. seldata = X(randIndex(1:100),:);
  8. %% 可视化
  9. displayData(seldata);
复制代码


displayData函数:
[/b]
  1. %% 函数部分
  2. function [figurePane,display_array] = displayData(X,image_width)
  3. %% 初始参数设置(图像大小,样本结构)
  4. [m,n] = size(X);
  5. if ~exist('image_width','var')||empty(image_width)
  6.     image_width = round(sqrt(n));
  7. end
  8. image_height = round(n/image_width);
  9. %% 设置figurePane(灰度、大小)
  10. colormap(gray);
  11. figure_rows = floor(sqrt(m));
  12. figure_cols = ceil(sqrt(m));
  13. %% 初始化display_array
  14. pad = 1;%图像之间的间隔
  15. display_array = -ones(pad+(image_height+pad)*figure_rows, ...
  16.     pad+(image_width+pad)*figure_cols);% 将原始图形初始化为纯黑色
  17. %% 将X的值赋给display_array
  18. current_image = 1;
  19. for row = 1:figure_rows
  20.     for col = 1:figure_cols
  21.         max_val = max(X(current_image,:));% 求得每行(每个变量)的最大值
  22.         % 赋值的同时,进行了归一化处理
  23.         display_array(pad+(image_height+pad)*(row-1)+(1:image_height), ...
  24.             pad+(image_width+pad)*(col-1)+(1:image_width))=...
  25.             reshape(X(current_image,:),image_height,image_width)/max_val;
  26.         current_image = current_image+1;
  27.         if current_image > m
  28.             break;
  29.         end
  30.     end
  31.     if current_image > m
  32.         break;
  33.     end
  34. end
  35. %% 绘制
  36. figurePane = imagesc(display_array,[-1,1]);
  37. title('Random handwritten digits');
  38. axis image off;
  39. % 关闭坐标轴
  40. drawnow; % 直译:现在就画~
复制代码


ps:这两天学习(复习)神经网络的one-VS-All算法,但是感觉初次接触这玩意,逻辑回归在这个之前学了一点,所以难度最大的、最难理解的函数部分,竟然是打印那个图片!(代码对我来说相当复杂, 捉摸了一下午算是整透了),学的时候总是觉着自己学的方法可能不好,就是扣得比较死,但是我现在不想改,想把这个吴恩达的东西都学完了,然后学完MATLAB去学对应的python代码,希望最终结果是好的!

本帖被以下淘专辑推荐:

小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-6-1 02:07

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表