博客
关于我
【MATLAB】学习笔记(二次整理)
阅读量:551 次
发布时间:2019-03-09

本文共 2190 字,大约阅读时间需要 7 分钟。

MATLAB基础教程

图像读取与处理

PROGRAM ONE: imread、imshow、min、max

data = imread('fig.jpg');imshow(data);[min_val, max_val] = minmax(data(:));disp(max_val);data = data / 2;max_val = max(data(:));imshow(data);

ANALYSIS

  • 图像读取
  • data = imread('fig.jpg');

    使用 imread 函数读取名为 fig.jpg 的图像。注意文件名不含路径,fig.jpg 即为文件扩展名。

    1. 图片显示
    2. imshow(data);

      imshow 函数显示矩阵 data 中存储的图像。如果不希望 MATLAB 列出所有像元信息,可以在命令末尾添加 ;。例如:

      imshow(data;); % 不显示信息
      1. 最大值和最小值计算
      2. [min_val, max_val] = minmax(data(:));

        data(:) 将矩阵 data 转换为向量,使所有数值参与运算。minmax 函数返回最小值和最大值。

        TIPS

      3. 图片文件名应为 fig,而不是 fig.jpg
      4. 想隐藏某些计算结果,可以使用 @ 运算符。
      5. 将向量转换回矩阵,可以使用 reshape 函数。
      6. 使用 imwrite 存储和写取图像。
      7. STORE ANDьWRITE IMAGE

        imwrite(data, 'fig.jpg');imwrite(data, 'fig.tif');% 查看帮助文档help imreadhelp imwrite

        ARRAY MANIPULATION

        % 改变当前工作目录cd 'D:\tmp'% 创建向量或矩阵a = [1:5];b = [6:10];c = [11:15];d = [16:20];e = [21:25];% 垂直拼接向量data = [a; b; c; d; e]% 水平拼接向量data = [a, b, c, d, e]% 使用 `dlmwrite` 存储为 CSV 文件dlmwrite('data.csv', data)dlmwrite('data2.txt', data * 2)dlmwrite('data2.asc', data / 2)% 清空变量clear data

        STATISTICAL ANALYSIS

        data = readmatrix('E:\MATLAB\data.xlsx');% 计算矩阵均值mv = mean(data, 1);% 计算样本方差和标准差st = std(data);[n, m] = size(data);% 标准化数据X = (data - mv(ones(n, 1), :)) / st(ones(n, 1), :);% 计算相关系数矩阵R = corrcoef(X);% 主成分分析[u, v] = eig(R);eigv = diag(rot90(u) * rot90(v));% 计算方差贡献百分比per = 100 * eigv / sum(eigv);% 计算方差贡献累积百分比Cum = cumsum(per);

        LORENZ CURVE

        Lorenz curve 的计算涉及多种 MATLAB 函数,包括 cumsumlinspaceinterp1trapz 等。

        Example

        % 生成等分点t = linspace(0.01, 1, 100);% Lorenz 曲线计算Q = trapz(1.1, 0.01, t, 1.3, t);% 绘图box offax1 = axes('Position', get(gca, 'Position'));axes(ax1, 'YAxisLocation', 'left', 'XAxisLocation', 'top', ...    'Color', 'none', 'XColor', 'k', 'YColor', 'k');

        IMAGE ENHANCEMENT

        MATRIX OPERATIONS

        • vs. .* : 在矩阵运算中,* 表示普通矩阵乘法,而 .* 表示对应元素相乘。例如:
        a = [1 1; 1 1];a^2    % 2 2; 2 2a.*2   % 2 2; 2 2plot(a.*2);

        NOTATION

        • / : 除法,数值在前或后无区别,矩阵除法需注意维度。
        • fspecial() : 创建预定义图像滤镜。
        • imfilter() : 应用滤镜进行图像处理。
        • imnoise() : 添加噪声。
        • sqrt(double(p1).^2 + double(p2).^2); : 计算两数平方和的平方根。

        multi-spectral analysis

        使用 pca() 进行多光谱转换,分割 RGB 通道:

        % 读取多光谱图像img = imread('含有多个波段的图像.jpg');img = multispec2(img, 3); % 分别提取红、绿、蓝波段% 合成 RGB 图像img_rgb = cat(3, img(:,:4), img(:,:3), img(:,:2));imshow(img_rgb);

    转载地址:http://vrwsz.baihongyu.com/

    你可能感兴趣的文章
    python | ggplot,一个超强的 Python 库!
    查看>>
    python | grab,一个强大的 Python 库!
    查看>>
    python | rich,一个无敌的 Python 库!
    查看>>
    python | rq,一个无敌的 关于Redis 的Python 库!
    查看>>
    python | unoconv,一个超厉害的 Python 库!
    查看>>
    python | urllib3,一个超强的 Python 库!
    查看>>
    python | webassets,一个超强的 Python 库!
    查看>>
    python | werkzeug,一个不可思议的 Python 库!
    查看>>
    python | xlsxwriter,一个实用的 Python 库!
    查看>>
    python | xlwings,一个非常实用的 Excel 相关的 Python 库!
    查看>>
    python | 一文看懂Python闭包机制与变量作用域规则
    查看>>
    python读取含中文的json
    查看>>
    python | 如何用Python锁避免并发错误?
    查看>>
    python | 提升代码迭代速度的Python重载方法
    查看>>
    python | 深入理解Python并发编程中的GIL限制与解决方案
    查看>>
    Python | 爬虫实战——亚马逊搜索页监控(附详细源码)
    查看>>
    python | 高效使用Python工具自动生成模块文档的秘诀
    查看>>
    python 一个list去除另一个list中的值
    查看>>
    python 三大框架的 介绍。
    查看>>
    Python 下载的 11 种姿势,一种比一种高级!
    查看>>