图像处理matlab基础操作

文章目录

    • 1.图像大小旋转
    • 2.图像读写
    • 3.图像四倍减采样
    • 4.图像灰度量化
    • 5.灰度图像
    • 6.二进制图像
    • 7.RGB图像
    • 8.索引图象
    • 9.多帧图像
    • 10.图像邻域操作
    • 11.图像裁剪
    • 12.图像加法运算
    • 13.图像减法运算
    • 14.图像点运算
    • 15.图像乘法运算
    • 16.图像除法运算
    • 17.RGB转灰度
    • 18.RGB转索引
    • 19.灰度转索引
    • 20.索引转灰度
    • 21.索引转RGB
    • 22.灰度转二值
    • 23.索引转二值
    • 24.RGB转二值
    • 25.数值矩阵转换为灰度图像
    • 26.线性灰度变换
    • 27.分段线性灰度变换
    • 28.非线性灰度变换
    • 参考文献
    • 引用

1.图像大小旋转

I=imread('微信图片_20220429194904_512_512.bmp'); %读入图像

Id = imresize(I,1.5); %放大 1.5 倍

Ix = imresize(I,0.5); %缩小 0.5 倍

Iz=imrotate(I,60,'bilinear','crop'); %逆时针旋转 60°

Izz=imrotate(I,60,'bilinear','loose'); %逆时针旋转 60°

figure,imshow(I),title('原图'); %原图

figure,imshow(Id),title('放大 1.5'); %放大 1.5 倍

figure,imshow(Ix),title('缩小 0.5'); %缩小 0.5 倍

figure,imshow(Iz),title('逆时针旋转 60°'); %逆时针转 60°

figure,imshow(Izz),title('逆时针旋转 60°'); %逆时针转 60

2.图像读写

I=imread('微信图片_20220429194904.jpg');

J = imresize(I,[512 512]);

imshow(I)

figure

imshow(J)

imwrite(J,'微信图片_20220429194904_512_512.jpg','jpg');

imwrite(J,'微信图片_20220429194904_512_512.bmp','bmp');

imwrite(J,'微信图片_20220429194904_512_512.png','png');

imwrite(J,'微信图片_20220429194904_512_512.tif','tif');

3.图像四倍减采样

I=imread('微信图片_20220429194904_512_512.bmp');

[m,n]=size(I);

mm=1;

nn=1;

for i=1:2:m

for j=1:2:n

I1(mm,nn)=I(i,j);

nn=nn+1;

end

mm=mm+1;

nn=1;

end

figure;imshow(I); title('原图');

figure;imshow(I1);title('采样图');

4.图像灰度量化

I=imread('Lena.bmp');

%将 256 级的图像转换成128级,64级,32级灰度图像

%量化成128级

A=(0.5)*I;A1=floor(A);

%量化成64级

B=(0.25)*I;B1=floor(B);

%量化成32级

C=(0.125)*I;C1=floor(C);

figure

imshow(I);

figure

subplot(1,3,1),imshow(A1,[0,127]);title('128级灰度图像');

subplot(1,3,2),imshow(B1,[0,63]);title('64级灰度图像');

subplot(1,3,3),imshow(C1,[0,31]);title('32级灰度图像');

5.灰度图像

I=imread('Lena.bmp');

imshow(I)

J=filter2([1 2;-1 -2],I);

figure,imshow(J,[]);

6.二进制图像

I=zeros(100,100);

I(1:80,50:3:100)=1;

imshow(I);

I2=uint8(I);

figure,imshow(I2)

I3=I2~=0;

figure,imshow(I3)

whos;

7.RGB图像

I=imread('微信图片_20220429194904_512_512.bmp');

imshow(I)

figure

imshow(I(:,:,1))% 显示第 1 个颜色分量

figure

imshow(I(:,:,1))% 显示第 1 个颜色分量

figure

imshow(I(:,:,3))% 显示第 3 个颜色分量

8.索引图象

load trees

imshow(X)

figure

imshow(X,map)

9.多帧图像

I=uint8(zeros(128,128,1,27)); % 27 帧文件 mri.tif 初始化

for i=1:27

[I(:,:,:,i),map]=imread('mri.tif',i); % 读入每一帧

end

imshow(I(:,:,:,1),map); % 显示第 1 帧

figure,imshow(I(:,:,:,10),map); % 显示第 10 帧

figure,imshow(I(:,:,:,20),map); % 显示第 20 帧

figure,imshow(I(:,:,:,27),map); % 显示第 27 帧

10.图像邻域操作

I=imread('Lena.bmp');

f=inline('max(x(:))'); %构造复合函数

I2=nlfilter(I,[16 16],f); %滑动邻域操作

imshow(I)

figure,imshow(I2)

I3=imread('Lena.bmp');

f=inline('uint8(round(mean2(x)*ones(size(x))))'); %构造复合函数

I4=blkproc(I3,[16 16],f); %分离邻域操作

figure,imshow(I3)

figure,imshow(I4)

11.图像裁剪

I=imread('微信图片_20220429194904_512_512.bmp');

imshow(I);

I1=imcrop(I,[1 1 512 260]);

figure,imshow(I1)

12.图像加法运算

I1=imread('Lena.bmp');

imshow(I1)

I2=imread('Barbara.bmp');

figure,imshow(I2)

Id=imadd(I1,I2);

figure,imshow(Id)

13.图像减法运算

I=imread('rice.png');

imshow(I)

background = imopen(I,strel('disk',25)); %估计背景图像

figure, imshow(background);

I2=imsubtract(I,background); %从原图像中减去背景图像

figure, imshow(I2)

14.图像点运算

I=imread('微信图片_20220429194904_512_512.bmp');

figure,imshow(I)

I=double(I); %转换为双精度类型

I1=I*1.21+22;

I1=uint8(I1); %转换为 uint8

figure,imshow(I1)

15.图像乘法运算

I=imread('微信图片_20220429194904_512_512.bmp');

I1=immultiply(I,2);

I2=immultiply(I,0.5);

subplot(131),imshow(I)

subplot(132),imshow(I1)

subplot(133),imshow(I2)

16.图像除法运算

I=imread('微信图片_20220429194904_512_512.bmp');

I1=imdivide(I,1.6);

figure,imshow(I);

figure,imshow(I1);

17.RGB转灰度

X=imread('football.jpg'); %读取图像

I=rgb2gray(X); %将RGB图像转换为灰度图像

figure

subplot(121),imshow(X); %显示原图像

subplot(122),imshow(I); %显示转换后灰度图像

[X,map] = imread('trees.tif'); %读取图像

newmap = rgb2gray(map); %将彩色颜色映射表转换为灰度颜色映射表

figure subplot(121),imshow(X,map); %显示原图像

subplot(122),imshow(X,newmap); %显示转换后灰度图像

18.RGB转索引

RGB = imread('football.jpg'); %读取图像

[X1,map1]=rgb2ind(RGB,64); %将RGB图像转换成索引图像,颜色种数N是64种

[X2,map2]=rgb2ind(RGB,0.2); %将RGB图像转换成索引图像,颜色种数N是216种

map3= colorcube(128); %创建一个指定颜色数目的RGB颜色映射表

X3=rgb2ind(RGB,map3);

figure;

subplot(131),imshow(X1,map1); %显示用最小方差法转换后索引图像

subplot(132),imshow(X2,map2); %显示用均匀量化法转换后索引图像

subplot(133),imshow(X3,map3); %显示用颜色近似法转换后索引图像

图像处理matlab基础操作_第1张图片

19.灰度转索引

图像处理matlab基础操作_第2张图片
I = imread(‘cameraman.tif’) %读取图像

[X,map]=gray2ind(I,38); %灰度图像向索引图像转换,N取8

figure

subplot(1,2,1),imshow(I); %显示原灰度图像

subplot(1,2,2),imshow(X, map); %显示N=8转换后索引图像

I = imread(‘coins.png’); %读取图像

X = grayslice(I,32); %将灰度图像转换为索引图像

figure

subplot(1,2,1),imshow(I); %显示原图像

subplot(1,2,2),imshow(X,jet(36));%jet(M)是相当于colormap,是一个M×3的数组

图像处理matlab基础操作_第3张图片

20.索引转灰度

[X,map]=imread('forest.tif');

I = ind2gray(X,map); %将索引图像转换为灰度图像

figure,imshow(X,map); %索引图像

figure,imshow(I); %灰度图像

21.索引转RGB

[X,map]=imread('kids.tif');

RGB=ind2rgb(X,map); %将索引图像转换为真彩色图像

figure, imshow(X,map); %显示索引图像

figure,imshow(RGB); %显示真彩色图像

22.灰度转二值

I=imread('rice.png');

BW1=im2bw(I,0); %将灰度图像转换为二值图像,level值为0

BW2=im2bw(I,0.3); %将灰度图像转换为二值图像,level值为0.3

BW3=im2bw(I,0.5); %将灰度图像转换为二值图像,level值为0.5

BW4=im2bw(I,0.7); %将灰度图像转换为二值图像,level值为0.7

BW5=im2bw(I,1); %将灰度图像转换为二值图像,level值为1

figure;

subplot(231),imshow(I);

subplot(232),imshow(BW1); %显示level=0转换后的二值图像

subplot(233),imshow(BW2); %显示level=0.3转换后的二值图像

subplot(234),imshow(BW3); %显示level=0.5转换后的二值图像

subplot(235),imshow(BW4); %显示level=0.7转换后的二值图像

subplot(236),imshow(BW5); %显示level=1转换后的二值图像

23.索引转二值

load trees;

BW = im2bw(X,map,0.9); %将索引图像转换为二值图

figure

subplot(1,2,1),imshow(X,map); %显示原索引图像

subplot(1,2,2),imshow(BW); %显示转换后二值图像

24.RGB转二值

I=imread('pears.png'); %读取图像信息

BW=im2bw(I,0.5); %将RGB图像转换为二值图像

figure,

subplot(121),imshow(I); %显示原图像

subplot(122),imshow(BW); %显示转换后二值图像

25.数值矩阵转换为灰度图像

X=magic(256);

I= mat2gray(X); %将矩阵I转换为灰度图像

imshow(I); %显示转换后灰度图像

图像处理matlab基础操作_第4张图片

26.线性灰度变换

gamma=0.5; %设定调整线性度取值

I=imread('peppers.png'); %读入要处理的图像,并赋值给I

R=I; %将图像数据赋值给R

R (:,:,2)=0; %将原图像变成单色图像,保留红色

R(:,:,3)=0; R1=imadjust(R,[0.5 0.8],[0 1],gamma); %利用函数imadjust调整R的灰度,结果返回R1

G=I; %将图像数据赋值给G

G(:,:,1)=0; %将原图像变成单色图像,保留绿色

G(:,:,3)=0;

G1=imadjust(G,[0 0.3],[0 1],gamma); %利用函数imadjust调整G的灰度,结果返回G1

B=I; %将图像数据赋值给B

B(:,:,1)=0; %将原图像变成单色图像,保留蓝色

B(:,:,2)=0;

B1=imadjust(B,[0 0.3],[0 1],gamma); %利用函数imadjust调整B的灰度,结果返回B1

I1=R1+G1+B1; %求变换后的RGB图像

figure(1)

subplot(121),imshow(R);%绘制R、R1、G、G1、B、B1图像,观察线性灰度变换结果

subplot(122),imshow(R1);

figure(2);

subplot(121),imshow(G);

subplot(122),imshow(G1);

figure(3);

subplot(121),imshow(B);

subplot(122),imshow(B1);

figure(4);

subplot(121),imshow(I);

subplot(122),imshow(I1);

27.分段线性灰度变换

R=imread('微信图片_20220429194904_512_512.bmp');%读入原图像,赋值给R

J=rgb2gray(R); %将彩色图像数据R转换为灰度图像数据J

[M,N]=size(J); %获得灰度图像数据J的行列数M,N

x=1;y=1; %定义行索引变量x、列索引变量y

for x=1:M

for y=1:N

    if (J(x,y)<=35);     %对灰度图像J进行分段处理,处理后的结果返回给矩阵H
    
        H(x,y)=J(x,y)*10;
        
    elseif(J(x,y)>35&J(x,y)<=75);
    
        H(x,y)=(10/7)*[J(x,y)-5]+50;
        
    else(J(x,y)>75);
    
        H(x,y)=(105/180)*[J(x,y)-75]+150;
        
    end
    
end

end

subplot(121),imshow(J)

subplot(122),imshow(H);

28.非线性灰度变换

R=imread('微信图片_20220429194904_512_512.bmp'); %读入图像,赋值给R

G=rgb2gray(R); %转成灰度图像

G2=double(G); %数据类型转换成双精度

O=(log(G2+1))/10; %进行基于常用对数的非线性灰度变换

subplot(121),imshow(G);

subplot(122),imshow(O);

参考文献

[1]杨丹,赵海滨,龙哲.MATLAB图像处理实例详解[M].清华大学出版社,2013.

引用

杨丹,赵海滨,龙哲.MATLAB图像处理实例详解[M].清华大学出版社,2013.
https://www.icourse163.org/course/FJNU-1003147002?outVendor=zw_mooc_pclszykctj_

以上内容仅作为个人学习笔记,无商业行为。

你可能感兴趣的:(曲苑杂坛,matlab,matlab,图像处理,学习)