Matlab数字图像处理技术一、数字图像处理基础1、图形和图像的区别图形(矢量图):以几何数学为基础,图形由点、线、圆等图元组成,图形文件仅记录点的坐标和绘图命令。
图像(点阵图):用像素来描述的图,图像文件中记录每个像素的颜色和亮度。
2、四邻域和八邻域:4-邻域:设像素p(x,y),它有4个水平和垂直相邻的像素:(x-1,y)(x+1,y) (x,y-1)(x,y+1),这4个点组成p的4-邻域。
对角邻域:像素p(x,y)的4个对角临近像素:(x-1,y-1)(x+1,y-1)(x-1,y+1)(x+1,y+1),这4个点组成p的对角邻域。
8-邻域:像素p的4-邻域和对角邻域合起来组成p的8-邻域。
3、彩色模型(1)RGB模型8种颜色配比(归一化):(2)HIS模型:H(色度),S(饱和度),(I)亮度。
(3)二值模型:0—黑色,1—白色。
(4)灰度模型:白—黑有256个灰度级来显示图像,0—黑色,255—白色。
(5)几种图像的颜色数:二值图像:2种像素值灰度图像:256种灰度级彩色图像:256 * 256 * 256 = 2^24种索引彩色:4、图像处理中常用的输入设备:数码相机、数码摄像机、扫描仪;图像处理中常用的输出设备:显示器、打印机、绘图仪。
5、图像的存储:空间分辨率:M * N 幅度分辨率:G = 2^K存储一幅图像所需位数(bit):b = M * N * K。
二、图像的基本运算1、图像点运算F为输入点的灰度值,G为输出点的灰度值,a) b = 0时,a>1,图像对比度增大;0<a<1,图像对比度减小。
b) a = 1时,b>0,灰度值上移,亮度增加;b<0,灰度值下移,亮度降低。
c) a = 1,b = 255,图像反相。
Matlab中图像线性变换:Y = imlincomb(a,x,b); %Y=a*X+b2、图像的加法运算C(x,y) = A(x,y) + B(x,y)图像的叠加方法:g(x,y) = a*f(x,y)+ b*h(x,y);a+b = 1 matlab中:A = imread(‘第一幅图’);B = imread(‘第二幅图’);C = 0.5*A + 0.5*B;Imshow(c);3、减法运算主要检测同一场景两幅图像之间的变化G(x,y) = T2(x,y)- T1(x,y)Matlab中:A = imread(‘第一幅图’);B = imread(‘第二幅图’);C = A - B;Imshow(c);4、乘法运算用二值图像与原图像做乘法,得到需要的子图像。
Z = X .* Y; 要求X和Y的大小、数组元素相同。
Matlab中:X = imread(‘被点乘的图像’);Y = zeros(M,N);Y (70:120, 120:380) = 1;X = im2double(X);Z = X.*Y;Imshow(Z);5、图像几何运算(1)图像的镜像:B = fliplr(A);水平镜像B = flipud(A);垂直镜像(2)图像的平移:A = imread(‘tree.bmp’);[M N] = size(A);B = zeros(M, N, class(A));tx = 100, ty = 50;B(1+ty:M, 1+tx:N) = A(1:M-ty, 1:N-tx);imshow(B);(3)图像的旋转B = imrotate(A, 60, ‘bilinear’, ‘crop’);截去局部(4)图像的缩放B = imresize(A, m);(5)图像的转置B = A’三、图像的变换1、傅里叶变换傅里叶变换将图像从空域变换到频域;傅里叶逆变换将图像从频域变换到空域。
2、一维傅里叶变换(会计算)逆变换:Matlab中一维傅里叶变换: Y = fft(X),省略系数1/N3、二维傅里叶变换(会编程)Y = fft2(X)Matlab代码:A = zeros(300,300);A (100:200, 100:200) = 1;B = fft2(A);C = abs(B);D = fftshift(C);D1 = unint8(D);Imshow(D1);4、傅里叶变换的性质(1)平移不变性:在空域图像平移时,在频域中频谱不变(2)旋转一致性:空域中图像旋转a角度,在频域中同样也旋转a角度5、离散余弦变换Y = dct2(X)二维离散余弦变换A = imread(‘lenna.bmp’);A1 = im2double(A);B = dct2(A1);C = abs(B);Imshow(unint8(c));四、图像增强1、图像灰度映射(1)点运算:见二.1节(2)灰度拉伸将原始图像的灰度区间分成多段,分别作线性变换,即分段线性变换。
Y = imadjust(X, [a,b], [a’,b’]) *注意要归一化代码:A = imread(’ballet.bmp’);B = imadjust(A, [0, 0.2], [0, 0.8]);imshow(B);2、直方图的均衡化直方图:表达一幅图像灰度级数分布情况的统计图。
横坐标:灰度值fk,一般取0~255;纵坐标:1、某一灰度值fk的像素个数nk;2、灰度值fk出现的概率nk/n,n是像素的总个数。
*手工计算直方图均衡化步骤:(1)给出所有灰度级fk(k=0,…,L-1)的所有概率值;(2)求出所有累积分布函数gk:(3)对gk四舍五入取整:gk=(int)[(L-1)gk+0.5](4)确定对应关系:fk gk(5)计算新的概率值:Pf’*编程实现直方图均衡化Y = histeq(X)imhist(X)显示X的直方图代码:A = imread(‘pout.tif’);B = histeq(A);Imshow(B);3、空域滤波定义:在图像空间借助模板进行邻域操作,这一图像处理过程被称为空域滤波,模板被称为空域滤波器。
模板的定义:就是一个系数矩阵,经常是奇数。
*运算过程:就是用一个3*3的模板在图像上顺序滑动的过程。
i.设模版系数为3:ii.设图像的某子图像的灰度值为:iii.计算后像素点s5的灰度值为:R = k1s1+k2s2+...+k9s9空域滤波的分类1、平滑:消除噪声2、锐化:加强图像的边缘和轮廓。
(1)均值滤波a)目的:可去除图像的噪声,从而起到图像平滑的作用,但图像会模糊。
b)原理:利用模板,将一个像素及其邻域中的所有像素的灰度平均值赋给输出图像中相应的像素,从而达到平滑的目的。
c)模板的设计规则:模板的大小:3*3,5*5,……模板的系数:全为13*3的模板:模板尺寸越大,图像越模糊,图像细节丢失越多d) 给图像增加噪声给图像增加椒盐噪声:B = imnoise(A, ’saly & pepper’, d), d为噪声密度,缺省值0.05给图像增加高斯白噪声:B = imnoise(A, ‘gaussian’ , m, v); m为白色密度,默认0,v是噪声密度,默认0.01e) matlab编程实现A = imread(‘face_1.bmp’);h1 = ones(3,3)/9;B1 = imfilter(A, h1);imshow(B1);(2)中值滤波a)中值滤波的过程I. 用一个模板窗口在图像上滑动;II.把窗口中像素的灰度值按升序或者降序排列;III.将中间值赋给窗口中心的元素b)优点:1、抑制噪声2、较好的保护了边缘轮廓信息,减少模糊c)matlab编程实现A = imread(‘face_1.bmp’);B1 = mefilter2(A, [3,3]);imshow(B1);(3)锐化滤波用模板代替微分matlab编程实现A = imread(‘bot.bmp’);h1 = [1 2 1;0 0 0; -1 -2 -1];B1 = imfilter(A,h1);imshow(B1);4、频域滤波原理:图像变化平缓的部分靠近频域的圆心,这个区域为低频区域。
图像中边缘、噪音、变化陡峭的部分,以放射方向离开频域的圆心,这个区域为高频区域。
低通滤波:(1)步骤:a.对于给定的图像f(x,y),计算出它的傅立叶变换F(u,v)b.选择一个低通滤波器H(u,v)c.在频域内经行低通滤波G(U, V) = F(U,V) H(U,V)d.通过傅立叶的逆变换得到最终图像g(x, y)= F-1[G(u, v)](2)滤波器的选择Butterworth滤波器n为阶数,D0为截止频率到原点(u0, v0)的距离,D(u, v)为到原点(u0, v0)的距离。
(3)mybuffer_m:f = imread(‘一幅图’);f = im2double(f);F = fftshift(fft2(f));[M N] = size(F);n = 3; D0 = 40;u0 = floor(M/2); v0 = floor(N/2);for u = 1:Mfor v = 1:ND = sqrt((u-u0)^2+(v-v0)^2);H = 1/(1+(D/D0)^(2*n));G(u,v) = H * F(u, v);endendg = ifft2(ifftshift(G));g = im2unint8(real(g));imshow(g);5、彩色增强目的:1、将灰度图像转换成彩色图像;2、将真彩色图像进行处理,再得到新的真彩色图像。
彩色图像增强的方法:(1)伪彩色增强技术:将一幅灰度图转换成一幅彩色图像。
密度分割法:将一幅图像的灰度值分割成多个区间,每个区间赋予一种颜色●热金属编码[1~63] 蓝色[0,0,255][64~127] 紫色[200,0,200][128~191] 橘黄色[255,150,0][192~254] 黄色[255,255,0]●彩虹编码【0~63】蓝色【0,0,255】【64~127】绿色【0,255,255】【128~191】红色【255,0,0】【192~254】品红色【255,0,255】热金属编码代码:X = imread(‘cat.bmp’);Y = X/64; [M N] = size(Y);for i= 1:Mfor j = 1:Nswitch y(i, j)case 0Y1(I,j,1:3) = [0,0,255];case 1Y1(i,j,1:3) = [200,0,200];case 2Y1(i,j,1:3) =[255,150,0];case 3Y1(i,j,1:3) = [255,255,0];otherwiseY1(i,j,1:3)=[255,255,255]endendendimshow(Y1)(2)假彩色增强技术:将三幅灰度图像合成一幅彩色图像。