鱼C论坛

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

[其他分类] MATLAB灰度图打印

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

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

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

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

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

displayData函数:
[/b]
%% 函数部分
function [figurePane,display_array] = displayData(X,image_width)
%% 初始参数设置(图像大小,样本结构)
[m,n] = size(X);
if ~exist('image_width','var')||empty(image_width)
    image_width = round(sqrt(n));
end
image_height = round(n/image_width);
%% 设置figurePane(灰度、大小)
colormap(gray);
figure_rows = floor(sqrt(m));
figure_cols = ceil(sqrt(m));
%% 初始化display_array
pad = 1;%图像之间的间隔
display_array = -ones(pad+(image_height+pad)*figure_rows, ...
    pad+(image_width+pad)*figure_cols);% 将原始图形初始化为纯黑色
%% 将X的值赋给display_array
current_image = 1;
for row = 1:figure_rows 
    for col = 1:figure_cols
        max_val = max(X(current_image,:));% 求得每行(每个变量)的最大值
        % 赋值的同时,进行了归一化处理
        display_array(pad+(image_height+pad)*(row-1)+(1:image_height), ...
            pad+(image_width+pad)*(col-1)+(1:image_width))=...
            reshape(X(current_image,:),image_height,image_width)/max_val;
        current_image = current_image+1;
        if current_image > m
            break;
        end
    end
    if current_image > m
        break;
    end
end
%% 绘制
figurePane = imagesc(display_array,[-1,1]);
title('Random handwritten digits');
axis image off;
% 关闭坐标轴
drawnow; % 直译:现在就画~

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

本帖被以下淘专辑推荐:

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-12-21 16:30

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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