数字图像处理期末复习资料_第1页
数字图像处理期末复习资料_第2页
数字图像处理期末复习资料_第3页
数字图像处理期末复习资料_第4页
数字图像处理期末复习资料_第5页
已阅读5页,还剩14页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、空域内对图像进行平移运算(几何运算)图像平移变换式的矩阵形式为:P37close all;clear all;clc;%图像的平移运算Im = imread('meinv.jpg');if numel(size(Im) > 2 %如果是彩色图像就转换为灰度图像 Im = rgb2gray(Im); endIm = im2double(Im); %归一化处理subplot(1, 2, 1); imshow(Im); title('平移前的图像');m, n = size(Im); %获取图像大小res = zeros(m, n) + 255; %构造结果矩阵

2、。每个像素点默认初始化为0(黑色)delX = 50; %平移量XdelY = 50; %平移量Ymask = 1 0 delX; 0 1 delY; 0 0 1; %平移的变换矩阵for i = 1 : m for j = 1 : n tmp = i; j; 1; tmp = mask * tmp; %矩阵乘法 得到的结果是一个3行1列的数 x = tmp(1, 1); y = tmp(2, 1); %判断变换后的位置是否越界 if (x <= m) && (y <= n) && (x >= 1) && (y >= 1)

3、 res(x, y) = Im(i, j); end endendsubplot(1, 2, 2); imshow(res); title('平移后的图像');空域内对图像进行镜像运算(几何运算)%灰度图像clcclearimg = imread('meinv.jpg');%读取图像if ndims(img) = 3 %ndims(a)表示矩阵a的维数。如果是彩色图像就转换为灰度图像 img = rgb2gray(img); % 转换endsubplot(1, 3, 1); imshow(img); title('原始图像');img = im2

4、double(img);% 转换为double类型,使所有点在0-1之间m, n = size(img);%获取图像大小res1 = zeros(m, n) + 255;%构造结果矩阵,加255将图像初始化为白色,不加就是黑色res2 = zeros(m, n) + 255;for i = 1 : m for j = 1 : n res1(i, n - j + 1) = img(i, j);%水平镜像 res2(m - i + 1, j) = img(i, j);%垂直镜像 endendsubplot(1, 3, 2); imshow(res1); title('水平镜像');

5、subplot(1, 3, 3); imshow(res2); title('垂直镜像');imwrite(res1, 'hor.bmp');imwrite(res2, 'ver.bmp');%彩色图像clcclearimg = imread('meinv.jpg');%读取图像subplot(1, 3, 1); imshow(img); title('原始图像');img = im2double(img);% 转换为double类型,使所有点在0-1之间m, n, l = size(img);%获取图像大小res

6、1 = zeros(m, n, l) + 255;%构造结果矩阵,加255将图像初始化为白色,不加就是黑色res2 = zeros(m, n, l) + 255;for i = 1 : m for j = 1 : n for k = 1 : l res1(i, n - j + 1, k) = img(i, j, k);%水平镜像 res2(m - i + 1, j, k) = img(i, j, k);%垂直镜像 end endendsubplot(1, 3, 2); imshow(res1); title('水平镜像');subplot(1, 3, 3); imshow(re

7、s2); title('垂直镜像');imwrite(res1, 'hor.bmp');imwrite(res2, 'ver.bmp');空域内使用指定的模板对灰度图像进行平滑处理1%均值滤波clcclose all;clearimg = imread('meinv.jpg');if numel(size(img) > 2 %如果是彩色图像就转换为灰度图像 img = rgb2gray(img); endfigure;imshow(img);img = double(img);%n是模板大小(即n×n) n = 3

8、; a(1 : n, 1 : n) = 1; %a即n×n模板,元素全是1 height, width = size(img); %输入图像是height,width的,且hight>n,width>n x1 = double(img); x2 = x1;for i = 1 : height - n + 1 for j = 1 : width - n + 1 c = x1(i : i + (n - 1), j : j + (n - 1) .* a; %取出x1中从(i,j)开始的n行n列元素与模板相乘 s = sum(sum(c); %求c矩阵中各元素之和 x2(i +

9、(n - 1) / 2,j + (n - 1) / 2) = s / (n * n); %将与模板运算后的各元素的均值赋给模板中心位置的元素 end end %未被赋值的元素取原值 pha = uint8(x2); figure; imshow(pha);2%中值滤波(最大值滤波、最小值滤波)clcclose all;clearimg = imread('meinv.jpg');if numel(size(img) > 2 %如果是彩色图像就转换为灰度图像 img = rgb2gray(img); endfigure;imshow(img);img = double(im

10、g);%n是模板大小(即n×n) n = 3; a(1 : n, 1 : n) = 1; %a即n×n模板,元素全是1 height, width = size(img); %输入图像是height,width的,且hight>n,width>n x1 = double(img); x2 = x1;for i = 1 : height - n + 1 for j = 1 : width - n + 1 c = x1(i : i + (n - 1),j : j + (n - 1); %取出x1中从(i,j)开始的n行n列元素,即模板(n×n的) e =

11、c(1, :); %是c矩阵的第一行 for u = 2 : n e = e, c(u, :); %将c矩阵变为一个行矩阵 end %mm=median(e);%mm是中值(mm=max(e)是最大值,mm = min(e)是最小值) mm = min(e); x2(i + (n - 1) / 2,j + (n - 1) / 2) = mm; %将模板各元素的中值赋给模板中心位置的元素 end end %未被赋值的元素取原值 pha = uint8(x2); figure; imshow(pha);彩色图像平滑处理(均值滤波)close all;clearclcimg = imread(

12、9;meinv.jpg');if (numel(size(img) < 3) disp('请输入彩色图像');else subplot(2, 3, 1); imshow(img); title('原始图像'); img = imnoise(img, 'gaussian');%g=imnoise(f,gaussian,m,var)是将均值为m,方差为var的高斯噪声加到图像f上。m的默认值是0、var默认值是0.01 subplot(2, 3, 2); imshow(img); title('添加噪声后的图像'); %

13、分解 img = double(img); R = img(:, :, 1); G = img(:, :, 2); B = img(:, :, 3); %对彩色图像的R分量进行平滑处理,而其它分量保持不变 m, n = size(R); for i = 2 : m - 1 for j = 2 : n - 1 R(i, j) = (R(i - 1, j - 1) + R(i - 1, j) + R(i - 1, j + 1) + R(i, j - 1) + R(i, j) + R(i, j + 1) + R(i + 1, j - 1) + R(i + 1, j) + R(i + 1,j + 1)

14、 / 9; end end img1 = cat(3, R, G, B); img1 = uint8(img1); subplot(2, 3, 3); imshow(img1); title('R分量平滑处理后'); %对彩色图像的R分量和G分量进行平滑处理,B分量保持不变 R = img(:, :, 1); G = img(:, :, 2); B = img(:, :, 3); m, n = size(R); for i = 2 : m - 1 for j = 2 : n - 1 R(i, j) = (R(i - 1, j - 1) + R(i - 1, j) + R(i -

15、 1, j + 1) + R(i, j - 1) + R(i, j) + R(i, j + 1) + R(i + 1, j - 1) + R(i + 1, j) + R(i + 1,j + 1) / 9; G(i, j) = (G(i - 1, j - 1) + G(i - 1, j) + G(i - 1, j + 1) + G(i, j - 1) + G(i, j) + G(i, j + 1) + G(i + 1, j - 1) + G(i + 1, j) + G(i + 1,j + 1) / 9; end end img2 = cat(3, R, G, B); img2 = uint8(i

16、mg2); subplot(2, 3, 4); imshow(img2); title('对R和G分量进行平滑处理后'); %对彩色图像的3个分量同时进行平滑处理 R = img(:, :, 1); G = img(:, :, 2); B = img(:, :, 3); m, n = size(R); for i = 2 : m - 1 for j = 2 : n - 1 R(i, j) = (R(i - 1, j - 1) + R(i - 1, j) + R(i - 1, j + 1) + R(i, j - 1) + R(i, j) + R(i, j + 1) + R(i +

17、 1, j - 1) + R(i + 1, j) + R(i + 1,j + 1) / 9; G(i, j) = (G(i - 1, j - 1) + G(i - 1, j) + G(i - 1, j + 1) + G(i, j - 1) + G(i, j) + G(i, j + 1) + G(i + 1, j - 1) + G(i + 1, j) + G(i + 1, j + 1) / 9; B(i, j) = (B(i - 1, j - 1) + B(i - 1, j) + B(i - 1, j + 1) + B(i, j - 1) + B(i, j) + B(i, j + 1) + B(

18、i + 1, j - 1) + B(i + 1, j) + B(i + 1, j + 1) / 9; end end img3 = cat(3, R, G, B); img3 = uint8(img3); subplot(2, 3, 5); imshow(img3); title('对3个分量进行平滑处理后');end空域内对灰度图像或彩色图像进行模板卷积运算及增强处理 1模板:clcclose all;clear%FileName, FilePath = uigetfile('*.jpg;*.png;*.tif;*.img;*.gif;','请选择图像

19、数据');%str = FilePath FileName;img = imread('meinv.jpg');if numel(size(img) > 2 %如果是彩色图像就转换为灰度图像 img = rgb2gray(img); endsubplot(1, 3, 1); imshow(img); title('原始图像');m, n = size(img);img = im2double(img);dimg = img;%边界for i = 2 : m - 1%非边界 for j = 2 : n - 1 dimg(i, j) = (img(i

20、+ 1, j) + img(i - 1, j) + img(i, j + 1) + img(i, j - 1) / 4; endendsubplot(1, 3, 2); imshow(dimg); title('模板运算后的图像');subplot(1, 3, 3); imshow(img + dimg); title('增强的图像');2模板:clcclose all;clearimg = imread('meinv.jpg');if numel(size(img) > 2 %如果是彩色图像就转换为灰度图像 img = rgb2gray(

21、img); endfigure;imshow(img);m, n = size(img);img = im2double(img);a = input('请输入a值(范围在0, 1之间):');dimg = img; %边界for i = 2 : m - 1 %非边界 for j = 2 : n - 1 dimg(i, j) = img(i - 1, j) * (-a) + img(i, j - 1) * (-a) + img(i, j) * (1 + 4 * a) + img(i, j + 1) * (-a) + img(i + 1, j) * (-a); endendfig

22、ure; imshow(img + dimg);3模板:clcclose all;clearimg = imread('meinv.jpg');if numel(size(img) > 2 %如果是彩色图像就转换为灰度图像 img = rgb2gray(img); endfigure;imshow(img);m, n = size(img);img = im2double(img);dimg = img; %边界for i = 3 : m - 2 %处理非边界像素 for j = 3 : n - 2 dimg(i, j) = img(i - 2, j - 2) + img

23、(i - 2, j - 1) * 4 + img(i - 2, j) * 7 + img(i - 2, j + 1) * 4 + img(i - 2, j + 2) + img(i - 1, j - 2) * 4 + img(i - 1, j - 1) * 16 + img(i - 1, j) * 26 + img(i - 1, j + 1) * 16 + img(i - 1, j + 2) * 4 + img(i, j - 2) * 7 + img(i, j - 1) * 26 + img(i, j) * 41 + img(i, j + 1) * 26 + img(i, j + 2) * 7

24、 + img(i + 1, j - 2) * 4 + img(i + 1, j - 1) * 16 + img(i + 1, j) * 26 + img(i + 1, j + 1) * 16 + img(i + 1, j + 2) * 4 + img(i + 2, j - 2) + img(i + 2, j - 1) * 4 + img(i + 2, j) * 7 + img(i + 2, j + 1) * 4 + img(i + 2, j + 2); endendfigure; imshow(img + dimg / 273);拉普拉斯模板、锐化算子(P65)4彩色图像 拉普拉斯模板clos

25、e all;clearclc;img = imread('meinv.jpg');if (numel(size(img) < 3) disp('请输入彩色图像');else subplot(2, 2, 1); imshow(img); title('原始图像'); img = im2double(img); R = img(:, :, 1); G = img(:, :, 2); B = img(:, :, 3); %对R分量使用基本的Laplacian模板(P65)进行增强处理;R1 = R + R0 m, n = size(R); R1

26、= R; for i = 2 : m - 1 for j = 2 : n - 1 R1(i, j) = R(i, j) * (-4) + R(i - 1, j) + R(i + 1, j) + R(i, j - 1) + R(i, j + 1); end end R2 = R - R1; %模板中心为负, 做减法运算 img1 = cat(3, R2, G, B); subplot(2, 2, 2); imshow(img1); title('对R分量处理后'); %对R和G分量使用扩展的Laplacian模板进行增强处理; m, n = size(R); R1 = R; G1

27、 = G; for i = 2 : m - 1 for j = 2 : n - 1 R1(i, j) = R(i, j) * (-8) + R(i - 1, j) + R(i + 1, j) + R(i, j - 1) + R(i, j + 1) + R(i - 1, j - 1) + R(i + 1, j - 1) + R(i - 1, j + 1) + R(i + 1, j + 1); G1(i, j) = G(i, j) * (-8) + G(i - 1, j) + G(i + 1, j) + G(i, j - 1) + G(i, j + 1) + G(i - 1, j - 1) + G

28、(i + 1, j - 1) + G(i - 1, j + 1) + G(i + 1, j + 1); end end R2 = R - R1; %模板中心为负, 做减法运算 G2 = G - G1; img2 = cat(3, R2, G2, B); subplot(2, 2, 3); imshow(img2); title('对R和G分量处理后'); %使用扩展的Laplacian模板对彩色图像的三个分量进行增强处理 m, n = size(R); R1 = R; G1 = G; B1 = B; for i = 2 : m - 1 for j = 2 : n - 1 R1(

29、i, j) = R(i, j) * (-8) + R(i - 1, j) + R(i + 1, j) + R(i, j - 1) + R(i, j + 1) + R(i - 1, j - 1) + R(i + 1, j - 1) + R(i - 1, j + 1) + R(i + 1, j + 1); G1(i, j) = G(i, j) * (-8) + G(i - 1, j) + G(i + 1, j) + G(i, j - 1) + G(i, j + 1) + G(i - 1, j - 1) + G(i + 1, j - 1) + G(i - 1, j + 1) + G(i + 1, j

30、 + 1); B1(i, j) = B(i, j) * (-8) + B(i - 1, j) + B(i + 1, j) + B(i, j - 1) + B(i, j + 1) + B(i - 1, j - 1) + B(i + 1, j - 1) + B(i - 1, j + 1) + B(i + 1, j + 1); end end R2 = R - R1; %模板中心为负, 做减法运算 G2 = G - G1; B2 = B - B1; img3 = cat(3, R2, G2, B2); subplot(2, 2, 4); imshow(img3); title('对3个分量处

31、理后');end频域内对图像进行低通处理(理想、Butterworth等)。6部(P83)1Butterworth滤波:clcclose all;clearimg = imread('meinv.jpg');if numel(size(img) > 2 %如果是彩色图像就转换为灰度图像 img = rgb2gray(img); endsubplot(221); imshow(img); xlabel('原图像');img = double(img); %数据类型转换img = fft2(img); %图像Fourier变换img = fftshif

32、t(img); %Fourier变换平移,中心变换%中心变换代码实现,反中心变化也是一样的% for i = 1 : m% for j = 1 : n% img(i, j) = (-1) (i + j) * img(i, j);% end% endF2 = log(abs(img); %对Fourier变换结果取绝对值,然后取对数subplot(222);imshow(F2, ,'InitialMagnification','fit'); %将计算后的矩阵用图像表示xlabel('(b)原始图像的Fourier变换图像 ');N1, N2 = s

33、ize(img); %Fourier变换图像尺寸n = 2; %参数赋初值。高通n = 0.3d0 = 205;n1 = round(N1 / 2); %数据取整n2 = round(N2 / 2); %数据取整for i = 1 : N1 %遍历图像像素 for j = 1 : N2 d = sqrt(i - n1) 2 + (j - n2) 2); if d = 0 h = 0; else h = 1 / (1 + (d / d0) (2 * n);%高通:h = 1 / (1 + (d0 / d) (2 * n); end img(i, j) = h * img(i, j); %图像矩阵

34、计算处理 endendF3 = log(abs(img); %对Fourier变换结果取绝对值,然后取对数subplot(223); imshow(F3, 'InitialMagnification', 'fit');xlabel('(c)滤波后的Fourier变换图像');img = ifftshift(img);img = ifft2(img);img = uint8(real(img);subplot(224);imshow(img); xlabel('(d)Butterworth低通滤波图像');2理想滤波:clcclose all;clearimg = imread('meinv.jpg');if numel(size(img) > 2 img = rgb2gray(img);endsubplot(121); imshow(img);title('原图像');img = double(img);img = fftshift(fft2(img);m, n = size(img);m0 = round(m / 2);n0 = round(n / 2);d = 20;%d = input('请输入d:');for i = 1 : m for j =

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论