前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >大神带你玩转matlab图像处理 (一)

大神带你玩转matlab图像处理 (一)

作者头像
巴山学长
发布2020-01-14 16:11:10
6940
发布2020-01-14 16:11:10
举报
文章被收录于专栏:巴山学长巴山学长

第一章 几何变换

1.1 图像平移

语法规则:B=imtranslate(A,[h,v])

A:原图像,B:结果图像

h>0右边移动,V>0下移

h<0左边移动,V<0上移

代码语言:javascript
复制
clc;clear;
s=what;
p=s.path;
I=imread([p,'\图像素材\','lenaRGB.bmp']);
I1=imtranslate(I,[50,100]);
I2=imtranslate(I,[-20,-100]);
subplot(2,2,1);imshow(I);title('原图');
subplot(2,2,2);imshow(I1);title('右平移50,下平移100');
subplot(2,2,3.5);imshow(I2);title('左平移20,上平移100');                           

运行结果

1.2 图像旋转

语法规则:B=imrotate(A,K)

A:原图像,B:结果图像

旋转方向角度K:K>0逆时针,K<0顺时针

代码语言:javascript
复制
clc;clear;
s=what;
p=s.path;
I=imread([p,'\图像素材\','lenaRGB.bmp']);
I1=imrotate(I,50);I2=imrotate(I,-10);
subplot(2,2,1);imshow(I);title('原图');
subplot(2,2,2);imshow(I1);title('逆时针旋转50度');
subplot(2,2,3.5);imshow(I2);title('顺时针旋转10度');

运行结果

1.3 图像缩放

语法规则:B=imresize(A,K)

A:原图像,B:结果图像

放缩倍数K:K>1放大,K<1缩小

代码语言:javascript
复制
clc;clear;
s=what;
p=s.path;
I=imread([p,'\图像素材\','lenaRGB.bmp']);
I1=imresize(I,0.5);I2=imresize(I,10);
subplot(2,2,1);imshow(I);title('原图');
subplot(2,2,2);imshow(I1);title('缩小0.5倍');
subplot(2,2,3.5);imshow(I2);title('放大10倍');

运行结果

注意:此时可能有人会说图像显示一样大小,虽然显示一样大,但是查看图像变 量会发现I、I1和I2的大小会发现已经实现了缩放,只是显示一样大小而已。

1.4 图像水平镜像

语法规则:B=fliplr(A)

A:原图像,B:结果图像

代码语言:javascript
复制
clc;clear;
s=what;
p=s.path;
I=imread([p,'\图像素材\','lenaRGB.bmp']);
I1=fliplr(I);
subplot(1,2,1);imshow(I);title('原图');
subplot(1,2,2);imshow(I1);title('水平镜像');

运行结果

1.5 垂直镜像

语法规则:B=flipud(A)

A:原图像,B:结果图像

代码语言:javascript
复制
clc;clear;
s=what;
p=s.path;
I=imread([p,'\图像素材\','lenaRGB.bmp']);
I1=flipud(I);
subplot(1,2,1);imshow(I);title('原图');
subplot(1,2,2);imshow(I1);title('垂直镜像');

第二章 图像正交变换

2.1 离散余弦变换

语法规则:

正变换:B=dct2(A)

逆变换:B=idct2(A)

A:原图像,B:结果图像

代码语言:javascript
复制
clc;clear;
s=what;
p=s.path;
I=imread([p,'\图像素材\','lenaRGB.bmp']);
subplot(2,2,1);imshow(I);title('原始图像');
gr=rgb2gray(I);%灰度化
subplot(2,2,2);imshow(gr);title('灰度化图像');
I1=dct2(gr);%离散余弦变换
subplot(2,2,3);imshow(I1);title('离散余弦变换');
I2=idct2(I1);%逆离散余弦变换
subplot(2,2,4);imshow(I2,[]);title('逆离散余弦变换');

运行结果

2.2 傅里叶变换

语法规则:

正变换:B=fft2(A)

逆变换:B=ifft2(A)

代码语言:javascript
复制
clc;clear;
s=what;
p=s.path;
I=imread([p,'\图像素材\','lena512.bmp']);
subplot(2,2,1);imshow(I);title('原始图像');
I1=fft2(I);%傅里叶变换
t=fftshift(I1);t1=abs(t);t2=log(t1);%将图像能量点移到中心
subplot(2,2,2);imshow(I1);title('傅里叶变换');
subplot(2,2,3);imshow(t2,[]);title('傅里叶变换,能量移到原点');
I2=ifft2(I1);%逆傅里叶变换
subplot(2,2,4);imshow(I2,[]);title('逆傅里叶变换');

运行结果

2.3 离散小波变换

语法规则:

正变换:[ca,cb,cc,cd] =dwt2(X,wname)

逆变换:Y= idwt2([ca,cb,cc,cd],'wname')

X:原图像,Y:逆变换后的图像,wname:小波的名字

ca:近似矩阵;cb,cc,cd为细节矩阵;

小波名称包括:db1、db2、……、db45和haar;

代码语言:javascript
复制
clc;clear;
s=what;
p=s.path;
I=imread([p,'\图像素材\','lena512.bmp']);
subplot(2,4,1);imshow(I);title('原始图像');
[ca,cb,cc,cd]=dwt2(I,'db1');%离散小波变换
subplot(2,4,2);imshow(ca,[]);title('离散小波变换(ca子带图)');
I2=idwt2(ca,cb,cc,cd,'db1');
subplot(2,4,3),imshow(I2,[]);title('逆离散小波变换');
subplot(2,4,4);imshow(cb,[]);title('cb子带图')
subplot(2,4,5);imshow(cc,[]);title('cc子带图')
subplot(2,4,6);imshow(cd,[]);title('cd子带图')
subplot(2,4,7);imshow([ca,cb;cc,cd],[]);title('全部子带图')

运行结果

2.4 提升小波变换(单级逆离散二维小波变换)

语法规则:

正变换:[ca,cb,cc,cd]=lwt2(X,wname)

逆变换:Y=ildwt2([ca,cb,cc,cd],wname)

X:原图像,Y:逆变换后的图像,wname:小波的名字

ca:近似矩阵;cb,cc,cd为细节矩阵;

注意:提升小波变换原始图像需要用double处理

提升小波名称如下表:

WHAME Value

‘lazy’

‘haar’

‘db1’、 ‘db2’、 ‘db3’、 ‘db4’、 ‘db5’、 ‘db6’、 ‘db7’、 ‘db8‘

‘sym2’、‘sym3’、‘sym4’、‘sym5’、‘sym6’、‘sym7’、‘sym8’

Cohen-Daubechies-Feauveau wavelets‘cdf1.1’、 ‘cdf1.3’、 ‘cdf1.5’‘cdf3.1’、 ‘cdf3.3’、 ‘cdf3.5’‘cdf5.1’、 ‘cdf5.3’、 ‘cdf5.5’‘cdf2.2’、 ‘cdf2.4’、 ‘cdf2.6’‘cdf4.2’、 ‘cdf4.4’、 ‘cdf4.6’‘cdf6.2’、 ‘cdf6.4’、 ‘cdf6.6’、

‘biorX.Y‘

‘rbioX.Y’

‘bs3’

‘rbs3’

‘9.7’

‘r9.7’

代码语言:javascript
复制
clc;clear;
s=what;
p=s.path;
I=imread([p,'\图像素材\','lena512.bmp']);
I=double(I);
subplot(2,4,1);imshow(I,[]);title('原始图像');
[ca,cb,cc,cd]=lwt2(I,'haar');%提升小波变换
subplot(2,4,2);imshow(ca,[]);title('提升小波变换(ca子带图)');
I2=ilwt2(ca,cb,cc,cd,'haar');
subplot(2,4,3),imshow(I2,[]);title('逆提升小波变换');
subplot(2,4,4);imshow(cb,[]);title('cb子带图')
subplot(2,4,5);imshow(cc,[]);title('cc子带图')
subplot(2,4,6);imshow(cd,[]);title('cd子带图')
test=[ca,cb;cc,cd];
subplot(2,4,7);imshow(test,[]);title('全部子带图')

运行结果

以上就是今天介绍的图像处理推文全部内容,后期小编会陆续更新系统的matlab图像处理推文,希望大家持续关注,如有错误或者不懂的地方,可以留言评论,小编当竭诚为大家服务解答疑惑。

参考资料:

[1] https://www.mathworks.com/help/wavelet/ref/idwt2.html

[2] https://edu.51cto.com/course/16757.html

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-01-05,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 巴山学长 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 第一章 几何变换
    • 1.1 图像平移
      • 运行结果
        • 1.2 图像旋转
          • 1.3 图像缩放
            • 1.4 图像水平镜像
              • 1.5 垂直镜像
                • 2.1 离散余弦变换
                  • 2.2 傅里叶变换
                    • 2.3 离散小波变换
                      • 运行结果
                        • 2.4 提升小波变换(单级逆离散二维小波变换)
                        相关产品与服务
                        图像处理
                        图像处理基于腾讯云深度学习等人工智能技术,提供综合性的图像优化处理服务,包括图像质量评估、图像清晰度增强、图像智能裁剪等。
                        领券
                        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档