1. 程式人生 > >MATLAB第三章——一類陣列,圖片讀取及操作

MATLAB第三章——一類陣列,圖片讀取及操作

第三章

元胞陣列

  1. MATLAB元胞陣列(cell)可以將浮點型、字元型、結構陣列等不同型別的資料放在同一個儲存單元中
  2. [c,1]cell中插入數字1 cell2mat(c(2)) — cell型別轉換為矩陣

讀取圖片

  %% 讀取圖片
clc, clear, close all
a1=imread('000.bmp');
[m,n]=size(a1);
%% 批量讀取圖片
dirname = 'ImageChips';
files = dir(fullfile(dirname, '*.bmp'));
a=zeros(m,n,19);
pic=[];
for ii = 1:length(files)
  filename = fullfile(dirname, files(ii).name);
  a(:,:,ii)=imread(filename);
  pic=[pic,a(:,:,ii)];
end
double(pic);
figure
imshow(pic,[])
  1. dir(xxx)返回其中檔名或所有資料夾下所有檔名
  2. fullfile(a,b,c)合成一個地址a\b\c
  3. a(:,:,1)分塊的矩陣(其中的第一塊)
  4. imread('xxx.jpg');imshow(pic,[])前者為讀取圖片畫素,後者為展示圖片
  5. 原理在於將圖片變為矩陣,通過拼接ju’z矩陣來轉換為圖片。

批量行拼接圖片

function ConnectImages()
%% 讀取圖片
clc, clear, close all

%% 批量拼接圖片

    files = dir('*.jpg');maxrows=0;maxlines=0;
    pic=[];rows=[];lines=[];
    for ii = 1:length(files)
        filename = fullfile(files(ii).name);
        lite=imread(filename);
        [m,n]=size(lite);
        rows=[rows m];lines=[lines n];
    end
    maxrows=max(rows);

    for ii = 1:length(files)
        filename = fullfile(files(ii).name);
        lite2=imread(filename);
        [m,n]=size(lite2);
        temp=[lite2 ];
        final=[temp;255.*ones(maxrows-m,n/3,3)];
        pic=[pic,final];
    end

    figure
    imshow(pic,[])
    end

批量行加密圖片

files = dir('*.jpg');
for ii = 1:length(files)
    filename = fullfile(files(ii).name);
    lite=imread(filename);
    [m,n]=size(lite);
    encry=zeros(m,n/3,3);
    key=randsample(m,m)';
    for k=1;3
        encry(:,:,k)=lite(key,:,k);
    end
    encry=uint8(encry);
    figure
    imshow(encry);
end

雜項

  • 右鍵表格檔案(xls)直接匯入資料,選擇列向量可以直接看到、選用內部子列
  • 如果選擇匯出指令碼會看到匯入的具體程式碼,並加以修改、釋出
  • maxdrawdown()計算最大回撤
  • 三維陣列中每一個size都要相等