zoukankan      html  css  js  c++  java
  • 《数字图像处理》冈萨雷斯学习笔记1:基本原理

    一、图像的读取和显示

    A=imread(FILENAME,FMT)

    f = imread('D:myimagechestxray.jpg');

    二、图像的写入

    inwrite(A,FILENAME,FMT)

    inwrite(f,'patient10_run1.tif')

    只使用于JPEG图像

    imwrite(f,'filename.jpg','quality',q)

    三、图像的显示

    imshow(f,[low high])
    figure; %创建一个新窗口
    subplot(m,n,p);%打开一个有m行n列图像%位置的窗口,并将焦点位于第p个位置上。
    %%=======================
    figure;
    subplot(m,n,p);
    inshow(f);

    四、图像格式的转换

    im2uint8     将图像装换成uint8类型   将输入中所有小于0的值设置为0,大于1的值设置为255,其他值乘以255.

    im2uint16   将图像装换成uint16类型

    rgb2gray    从RGB图创建灰度图,存储类型不变。

    im2bw(f,T) 通过阈值处理,将一幅亮度图像转换成一幅二值图像g。

    im2double  将图像转换成double类型(Matlab中所有的数值计算都可用double类来进行,所以它也是图像处理应用中最常见使用的数据类)

    mat2gray   讲一个矩阵转换成一个强度图(但是什么叫强度图呢?)0对应的是黑色,1对应的是白色。

    补充知识点:

    1、TIFF 加标识的图像文件格式   .tif   .tiff

    2、当用imshow显示另一幅图像g时,Matlab会再屏幕上用新图像替换旧图像,为了保持第一幅图像并同时显示第二幅图像,可以使用figure函数。

    figure,imshow(g)

    3、图像的类型:亮度图像、二值图像、索引图像、RGB图像。

    4、若v是一个向量,则v(:)产生一个列向量,v(1:end)产生一个行向量。

    5、ture(M,N)生成一个大小为M*N的logical类矩阵,其元素为1.

         false(M,N)生成一个大小为M*N的logical类矩阵,其元素为0.

    6、rand(M,N)生成一个大小为M*N的矩阵,矩阵中元素都在区间[0,1]中均匀分布的随机数。

         randn(M,N)生成一个大小为M*N的矩阵,矩阵中元素是正态分布的随机数,随机数的均值是0,方差是1.

    7、函数定义:function[outputs]=name(inputs) 注意输出变量必须位于方括号内,而输入变量必须位于圆括号内。

    8、算数运算符 A*B表示矩阵乘法,而A.*B则表示数组乘法。

    9、B=A指的仅仅是做一个B等于A的“记录”,但实际上并不将数据复制到B。记住MATLAB没有复制信息这一功能。

    10、all函数:检测矩阵中是否全为非零元素,如果是,则返回1,否则,返回0。
           any函数:检测矩阵中是否有非零元素,如果有,则返回1,否则,返回0。

    11、可以用whos f 来查看图片的信息。

    12、f(x,y)=Asin(ux+vy)    x=0,1,2……,M-1   y=0,1,2……,N-1 生成该图像

    %First implement using for loops
    tic
    for r = 1:M
        ux = u*(r-1);
        for c = 1:N
            vy = v*(c-1);
            f(r,c) = A*sin(ux+cy);
        end
    end
    t1 = toc;                %End timing
    %Now implement using vectorization. call the image g
    tic    %start timing
    r = 0:M-1;
    c = 0:N-1;
    [C,R] = meshgrid(c,r);   %将行向量c,r指定的域变换成数组C,R
    g = A*sin(u*R + v*C);
    t2 = toc;                %End timing
    %compute the ratio of the two times
    rt = t1/(t2 + eps);
    [rt,f,g] = twodsin(1,1/(4*pi),1/(4*pi),512,512);
    g = mat2gray(g);
    imshow(g)

    向量化循环效率更高。

    12、从给定图像中提取子图像,提取大小为m*n且其左上角坐标为(rx,cy)的区域s

    rowhigh = rx+m-1;   %Matlab中图像的原点在(1,1)处
    colhigh = cy+n-1;
    s = f (rx:rowhigh,cy:colhigh);





  • 相关阅读:
    黑马程序员:3分钟带你读懂C/C++学习路线
    大学毕业的你,满腔洪荒之力却找不到出口?
    从零基础到精通的前端学习路线
    Python学习笔记(2)——Python的函数、模块、包和库
    Python学习笔记(1)——Python的概述(Python的环境、变量、数据类型、基本运算)
    MATLAB优化——减少for的使用
    初识Python(windows)——下载、安装、使用
    高维数据稀疏表示-什么是字典学习(过完备词典)
    用1天快速上手org-mode(windows系统)
    零基础数据挖掘学习清单
  • 原文地址:https://www.cnblogs.com/pangblog/p/3294023.html
Copyright © 2011-2022 走看看