MATLAB 图像处理简介


MATLAB图像处理简介 周丙寅 zhoubingyin@gmail.com 2012-09-06 大纲 • 初识MatLab • MatLab图像处理初步 • MatLab图像处理实例 2010-09-06 2 MATLAB图像处理简介 初识MATLAB • MatLab: Matrix Laboratory • 一种用于矩阵计算、数值分析、科学计算等的high-level语言 • 编程 • 可以使用命令行,也可以使用文件 • 语句末尾的分号可选 • 类似于C/C++的流程控制语句:if、for、while、switch… • 与C/C++的不同:不用声明变量,没有指针… • 为什么使用MatLab • 用户友好(GUI) • 易于使用 • 复杂数学的有力工具 2010-09-06 3 MATLAB图像处理简介 MATLAB桌面 2010-09-06 4 MATLAB图像处理简介 MATLAB基础 • 一切变量皆为矩阵 • 一个标量为一个1 × 1矩阵 • 푓 푥, 푦 = 푓 0,0 ⋯ 푓 0, 푀 − 1 ⋮ ⋱ ⋮ 푓 푁 − 1,0 ⋯ 푓 푁 − 1, 푀 − 1 f 푦, 푥 = f 1,1 ⋯ f 1, 푁 ⋮ ⋱ ⋮ f 푀, 1 ⋯ f 푀, 푁 • 例:v = [1 2 3; 4 5 6; 7 8 9]; • 访问矩阵元素 (行索引, 列索引) • v(2, 3)的值为6 • v(end, end)的值为9 • v(3, 1 : 2)的值为 7 8 • v(2, :)的值为 4 5 6 • v(:, 1)的值为 1 4 7 T 2010-09-06 5 v = 1 2 3 4 5 6 7 8 9 MATLAB图像处理简介 基本运算 • 均为矩阵运算 • +, -, *, /, \, ^, sqrt, sin, … • 元素级运算在运算符前面加点 •.*, ./, .\, .^, … • 逻辑运算 • ==, <, >, ~=, ~ • find('condition') • 生成基本矩阵 _function_name_(rows, columns) • zeros, ones, eye, rand… 2010-09-06 6 >> v = [1 3; 2 4], index = find(v < 3) v = 1 3 2 4 index = 1 2 MATLAB图像处理简介 控制语句 • If, else, elseif, for, while, break, continue, switch… 2010-09-06 7 MATLAB图像处理简介 • C/C++ if (a > b) { //… } for (n = 1; n < N; n += 2) { //… } • MatLab if a > b //… end for n = 1 : 2 : N //… end 脚本与函数 • m – 文件的两种类型 • 脚本:不接收输入参数,也不返回输出参数,直接对工作空间内的 变量进行运算 • 函数:可以接收输入参数,也可以返回输出参数,函数变量的可见 域为此函数 2010-09-06 8 MATLAB图像处理简介 a = 1; b = 2; c = (a – b) / (a + b); function c = fun(a, b) c = (a – b) / (a + b); end 获取帮助 • help • doc • lookfor 2010-09-06 9 MATLAB图像处理简介 >> help ones ONES Ones array. ONES(N) is an N-by-N matrix of ones. ONES(M,N) or ONES([M,N]) is an M-by-N matrix of ones. ONES(M,N,P,...) or ONES([M N P ...]) is an M-by-N-by-P-by-... array of ones. ONES(SIZE(A)) is the same size as A and all ones. … MATLAB图像处理初步 • Image Processing Toolbox:由一系列支持图像处理操作 的函数组成,包括 • 几何操作 • 邻域和块操作 • 线性滤波和滤波器设计 • 变换 • 图像分析和增强 • 二值图像操作 •… 2010-09-06 10 MATLAB图像处理简介 读取图像 • 可以使用函数imread将图像读入MatLab环境 I = imread('filename'); • filename:含有文件全名的字符串 • 支持格式 • TIFF、JPEG、GIF、BMP、PNG、XWD… • 例子 • I = imread('lena.jpg'); • I = imread('D:\Cloud\Dropbox\Matlab\image\lena.jpg'); 2010-09-06 11 MATLAB图像处理简介 显示图像 • 一般使用函数imshow来显示一幅图像 imshow(I, G) •I:要显示的图像数组 •G:显示该图像的灰度级数,默认值为256 • imshow(I) • imshow(I, [low, high) • imshow(I, []) • Impixelinfo, imdistline • figure, subplot 2010-09-06 12 MATLAB图像处理简介 保存图像 • 使用imwrite函数保存图像 imwrite(I, 'filename') •I:要保存的图像数组 • filename:含有文件全名的字符串 • 例子 • imwrite(I, '000.jpg'); • I = imread('D:\fire\lena.jpg'); • 辅助函数 • exist、mkdir、num2str… 2010-09-06 13 MATLAB图像处理简介 类型 • 数据类型 • double、uint8、uint16、uint32、int8、int16、int32、single、 char、logical • 图像类型 • 灰度图像 • 二值图像 • 索引图像 • RGB图像 2010-09-06 14 MATLAB图像处理简介 图像基本处理 • 类型转换 • I = mat2gray(D); % 将数据转换为灰度图像 • I = rgb2gray(C); % 将RGB彩色图像转换为灰度图像 • B = im2bw(I, level); % 图像二值化 • J = grayslice(I, n); % 将灰度图像均匀量化为n个等级 • 图像缩放与旋转 • J = imresize(I, 2); • J = imrotate(I, 15); 2010-09-06 15 MATLAB图像处理简介 图像基本处理 • 直方图均衡化 • J = histeq(I); • 中值滤波 • J = medfilt2(I, [M, N]); • 边缘检测 • E = edge(I, 'canny'); 2010-09-06 16 MATLAB图像处理简介 图像基本处理 • DEMO 1 >> I = imread('eight.tif'); >> J = imresize(I, 0.5, 'bilinear'); >> K = imresize(I, 1.5, 'bicubic'); >> figure, imshow(I) >> figure, imshow(J) >> figure, imshow(K) 2010-09-06 17 I J K MATLAB图像处理简介 图像基本处理 • DEMO 2 >> I = imread('eight.tif'); >> J = imnoise(I, 'salt & pepper', 0.02); >> K = medfilt2(J); >> figure, imshow(I), figure, imshow(J), figure, imshow(K) 2010-09-06 18 原始图像 添加椒盐噪声后图像 中值滤波后图像 MATLAB图像处理简介 使用矩阵运算 2010-09-06 19 MATLAB图像处理简介 [H, W] = size(I); J = zeros(2 * H, 2 * W); for r = 1 : 2 : 2 * H for c = 1 : 2 : 2 * W J(r, c) = I((r + 1) / 2, (c + 1) / 2); end end [H, W] = size(I); J = zeros(2 * H, 2 * W); r_ind = 1 : 2 : 2 * H; c_ind = 1 : 2 : 2 * W; J(r_ind, c_ind) = I((r_ind + 1) / 2, (c_ind + 1) / 2); 푥00 푥01 푥02 ⋯ 푥10 푥11 푥12 ⋯ 푥20 푥21 푥22 ⋯ ⋮ ⋮ ⋮ ⋱ 푥00 0 푥01 0 푥02 ⋯ 0 0 0 0 0 ⋯ 푥10 0 푥11 0 푥12 ⋯ 0 0 0 0 0 ⋯ 푥20 0 푥21 0 푥22 ⋯ ⋮ ⋮ ⋮ ⋮ ⋮ ⋱ 图像处理实例 • 检测图像中对象个数 2010-09-06 20 MATLAB图像处理简介 Step 1: 读取并显示图像 >> clear, close all >> I = imread('rice.png'); >> figure, imshow(I) 2010-09-06 21 MATLAB图像处理简介 Step 2: 估计图像背景 >> bg = imopen(I, strel('disk', 15)); >> figure, imshow(bg) >> figure, surf(double(bg(1 : 8 : end, 1 : 8 : end))), zlim([0 255]); >> set(gca, 'ydir', 'reverse') 2010-09-06 22 MATLAB图像处理简介 Step 3: 减去背景图像 >> fg = imsubtract(I, bg); >> figure, imshow(fg) 2010-09-06 23 MATLAB图像处理简介 Step 4: 调节图像对比度 >> fg_a = imadjust(fg, stretchlim(fg), [0 1]); >> figure, imshow(fg_a) 2010-09-06 24 MATLAB图像处理简介 Step 5: 二值化 >> level = graythresh(fg_a); >> fg_bw = im2bw(fg_a, level); >> figure, imshow(fg_bw) 2010-09-06 25 MATLAB图像处理简介 Step 6: 检测对象个数 >> [labeled, n_objects] = bwlabel(bw, 4); >> fprintf('\n图像中对象个数为: %d\n', n_objects); 图像中对象个数为: 101 2010-09-06 26 MATLAB图像处理简介 Questions? 2010-09-06 27 MATLAB图像处理简介
还剩26页未读

继续阅读

下载pdf到电脑,查找使用更方便

pdf的实际排版效果,会与网站的显示效果略有不同!!

需要 8 金币 [ 分享pdf获得金币 ] 0 人已下载

下载pdf

pdf贡献者

shidaren

贡献于2012-11-26

下载需要 8 金币 [金币充值 ]
亲,您也可以通过 分享原创pdf 来获得金币奖励!
下载pdf