1. Matlab图像处理概述


1.1.1. Matlab 相关函数介绍

imread 函数

  • 功能:实现多种类型图像文件的读取,如: BMP、 GIF、 JPEG、 PNG、 RAS 等。
  • 调用格式: A = imread(filename, fmt) 。filename 为图像文件名,可以是灰度图像,也可以是彩色 图像,如果文件不在当前目录或不在 Matlab 目录下,则需要列全文件路径。 fmt 为文件的扩展名, 指定文件类型。 A 为图像数据矩阵。

imshow 函数

  • 功能:显示图像。
  • 调用格式: imshow(I,n):显示灰度图像 I, n 为要显示图像的灰度等级,整数,默认为 256。 Imshow(I,[LOW HIGH]):以规定的灰度级范围[LOW HIGH]来显示灰度图像 I,低于 LOW 值的 显示为黑,高于 HIGH 值的显示为白,默认按 256 个灰度级显示。 imshow(RGB):显示真彩色图像 RGB。 imshow(BW):显示二值图像 BW。 imshow(X,map):显示索引图像, X 为索引图像的数据矩阵, map 为其颜色映射表。 imshow filename:显示 filename 指定的图像,若文件包括多帧图像,则显示第一幅,且文件必 须在 MATLAB 的当前目录下

imwrite 函数

  • 功能:实现图像文件的保存。
  • 调用格式: imwrite(A,’filename’,fmt): A 是要保存的图像数据矩阵, filename 是文件名, fmt 是文件格式。 imwrite(X,map,’filename’,fmt): X 为索引图像的数据矩阵, map 为其颜色映射表。

rgb2hsv 函数

  • 功能:实现 RGB 数据图像向 HSV 数据图像的转换。
  • 调用格式: HSV = rgb2hsv(RGB)。 RGB 为 RGB 彩色图像,为 3 维矩阵; HSV 为 3 维 HSV 图像矩阵, 3 维 依次为 H、 S、 V,取值均在[0,1]范围内。

rgb2ycbcr 函数

  • YCBCR = rgb2ycbcr(RGB) :实现 RGB 数据图像向 YCbCr 数据图像的转换。

rgb2gray 函数

  • 功能:彩色图像灰度化。
  • 调用格式: I = rgb2gray(RGB):真彩色 RGB 图像变换为灰度图像 I。 NEWMAP = rgb2gray(MAP):变换索引图像的调色板为灰度调色板。

imrotate 函数

  • 功能:实现图像旋转。
  • 调用格式: B = imrotate(A,ANGLE,METHOD,BBOX): A 为要进行旋转的图像; ANGLE 为要旋转的角度, 逆时针为正,顺时针为负; METHOD 为图像旋转插值方法,可取“ 'nearest', 'bilinear', 'bicubic'”,默 认为 nearest; BBOX 指定返回图像大小,可取“ crop”,输出图像 B 与输入图像 A 具有相同的大小, 对旋转图像进行剪切以满足要求;可取“loose”,默认是, B 包含整个旋转后的图像。

imresize 函数

  • 功能:实现图像缩放。
  • 调用格式: B = imresize(A, SCALE,METHOD)):返回原图 A 的 SCALE 倍大小图像 B; B = imresize(A, [NUMROWS NUMCOLS], METHOD)):对原图 A 进行比例缩放,返回图像 B 的 行数 NUMROWS 和列数 NUMCOLS,如果二者为 NaN,表明 Matlab 自动调整了图像的缩放比例; [Y, NEWMAP] = imresize(X, MAP, SCALE, METHOD)):对索引图像进行成比例缩放。

imtransform 函数

  • 功能:实现图像几何变换。
  • 调用格式: B = imtransform(A,TFORM,INTERP,param1,val1,param2,val2,…):对图像 A 实现空间变换TFORM 为 maketform 函数或 cp2tform 函数产生的结构; INTERP 为插值方法,可取“'nearest', 'bilinear', 'bicubic'”。 T = maketform(TRANSFORMTYPE,...):产生转换结构; TRANSFORMTYPE 为变换类型,可以 为“'affine', 'projective', 'custom', 'box', 'composite'”。

fliplr 函数

B=fliplr(X): 实现二维矩阵 X 沿垂直轴的左右翻转。

flipud 函数

B= flipud(X):实现二维矩阵 X 上下翻转。

flipdim 函数

B=flipdim(X,DIM): 使矩阵 X 按特定轴翻转, dim 指定翻转方式: 为 1 表示按行翻转;为 2 表示按列翻转。

permute 函数

B = permute(A,ORDER): 按照向量 ORDER 指定的顺序重排 A 的各维, B 中元素和 A 中元素完全相同, 但在 A、 B 访问同一个元素使用的下标不一样。 order 中的元素必须各不相同。

imadd 函数

C=imadd(A,B) :实现两幅图像相加。 1) A、 B 均为图像,则要求 B 和 A 的尺寸相等;若 B 是一个标量,则 C 表示对图像 A 整体加 上某个值(对小数部分取整)。 2)假如 A 和 B 对应运算和大于 255, C 仍取 255,即截断处理;为避免截断,可以将 C 存储为 uint16,即 C=imadd(A,B,’uint16’)。

imsubtract 函数

  • 功能:实现两幅图像相减。
  • 调用格式: C=imsubtract(A,B):差值结果小于 0 的赋值为 0,对 A、 B 的要求同 imadd 相同。 C=imabsdiff(A,B):差值结果取绝对值。

immultiply 函数

C=immultiply(A,B): 实现两幅图像相乘。

imdivide 函数

C=imdivide(A,B) :实现两幅图像相除

1.1.2. 显示图像

clc;
clear ;
I = imread('../pic/1/Fig0222(a)(face).tif');
[counts,x]=imhist(I);
[M,N] = size(I);
counts = counts./M/N;
figure,subplot(131),imshow(I),subplot(132),imhist(I);subplot(133),stem(x,counts); 
axis tight

结果:

image-20220219180403682,

1.1.3. 图像保存

clc
clear
f = imread('../pic/1/Fig0219(rose1024).tif');
imshow(f)
print -f1 -djpeg -r300 hi_res_rose % 保存到当前目录

结果:

image-2022021918082904

1.1.4. 图像模式转换

clc
clear
f1=100
uint8(round(f1*255)) % uint8: 0~255
f1 = [-0.5 0.5;0.75 1.5]
g1 = im2uint8(f1) 
f2 = uint8(f1*100)
g2 = im2uint8(f2)
f3 = f1*100
g3 = im2uint8(f3)
f4 = uint16(f1*50000)
g4 = im2uint8(f4)

1.1.5. im2bw 灰度图象变为二值图像

clc
clear
I = imread('../pic/lema.png');
subplot(1,2,1);
imshow(I);
title('原图像');
BW = im2bw(I,0.46);
subplot(122);
imshow(BW);
title('二值图像');

image-20220219181610691

1.1.6. imabsdiff 计算两幅图像间的绝对差

clc
clear
I = imread('../pic/1/Fig0222(b)(cameraman).tif');
subplot(131);imshow(I,[]);title('原图像');
J = uint8(filter2(fspecial('gaussian'), I));
subplot(132);imshow(J,[]);title('高斯滤波后的图像');
K = imabsdiff(I,J);
subplot(133);imshow(K,[]);title('相减后的图像');

image-202202191818200 79

1.1.7. imcomplement 对图像求补

clc
clear
im = imread('../pic/lema.png');
im2 = imcomplement(im);
subplot(1,2,1),imshow(im);title('原图像');
subplot(1,2,2),imshow(im2);title('求反操作后的图像');

image-2022012191819553501

1.1.8. 作业

  1. 实现了彩色图像的红绿通道互换、灰度化、旋转15度(最邻近插值、双线性插值)、缩放2.5倍(最邻近插值、双线性插值)两种几何变换以及镜像及拼接。
Click to show
Image1=imread('peppers.jpg');
%红绿通道互换
Image2=Image1;
Image2(:,:,1)=Image1(:,:,2);
Image2(:,:,2)=Image1(:,:,1);
imshow(Image2);
imwrite(Image2,'changecolor.jpg');
%灰度化
gray=rgb2gray(Image1);
figure;
subplot(121),imshow(Image1),title('Original Image');
subplot(122),imshow(gray),title('Gray Image');
imwrite(gray,'grayimage.jpg');
%图像旋转
Newgray1=imrotate(gray,15);
Newgray2=imrotate(gray,15,'bilinear');
figure;
subplot(121),imshow(Newgray1),title('旋转15°(最邻近插值) ');
subplot(122),imshow(Newgray2),title('旋转15°(双线性插值) ');
imwrite(Newgray1,'rotate1.jpg');
imwrite(Newgray2,'rotate2.jpg');
%图像缩放
Newgray3=imresize(gray,2.5,'nearest');
Newgray4=imresize(gray,2.5,'bilinear');
figure;
subplot(121),imshow(Newgray3),title('放大2.5倍(最邻近插值) ');
subplot(122),imshow(Newgray4),title('放大2.5倍(双线性插值) ');
imwrite(Newgray3,'scale1.jpg');
imwrite(Newgray4,'scale2.jpg');
%图像镜像与拼接
Image2=imread('lotus.bmp');
HImage=flipdim(Image2,2);
VImage=flipdim(Image2,1);
CImage=flipdim(HImage,1);
[h w]=size(Image2);
NewImage=zeros(h*2,w*2,3);
NewImage=[Image2 HImage;VImage CImage];figure,imshow(NewImage);
imwrite(NewImage,'newlotus.jpg');

结果

image-20220222234801558

image-20220222234926048

image-20220222235006773

Copyright © ZHOUWEN all right reserved,powered by GitbookLatest updated: 2022-03-12 17:07:49

results matching ""

    No results matching ""