多语言展示
当前在线:1008今日阅读:23今日分享:25

仿射变换和逻辑变换

仿射变换可以理解为对坐标进行缩放,旋转和平移后取得的新的坐标值,在二维空间中主要有尺度变换,尺度伸缩,尺度扭曲和旋转等,图像的逻辑变换又成为布尔运算,逻辑运算主要用于图像增强、图像识别、图像分割和图像复原等,本节就MATLAB中图像的仿射变换和逻辑变换进行讲解:
工具/原料
1

仿射变换

2

逻辑变换

方法/步骤
1

尺度变换示例:对图像进行尺度变换编写对应的m文件如下:clear all;I=checkerboard(30,6);subplot(1,2,1)imshow(I);title('原始图像');s=1.5;T=[s 0;0 s;0 0];K=maketform('affine',T);I1=imtransform(I,K,'bicubic','FillValues',0.9);subplot(1,2,2)imshow(I1);title('尺寸变换图像');程序运行结果如下图:

2

伸缩变换,对图像实现伸或缩运算示例:对图像进行伸缩变换编写对应的m文件如下:clear all;I=checkerboard(30,6);subplot(1,2,1)imshow(I);title('原始图像');t=3;T=[1 0;0 t;0 0];K=maketform('affine',T);I1=imtransform(I,K,'bicubic','FillValues',0.9);subplot(1,2,2)imshow(I1);title('伸缩变换图像');程序运行如下图:

3

扭曲变换                    示例:对图像进行扭曲变换编写对应的m文件如下:clear all;I=checkerboard(30,6);subplot(1,2,1)imshow(I);title('原始图像');u=0.8;T=[1 u;0 1;0 0];K=maketform('affine',T);I1=imtransform(I,K,'bicubic','FillValues',0.9);subplot(1,2,2)imshow(I1);title('扭曲变换图像');程序运行结果如下图:

4

旋转变换              示例:对图像进行旋转变换编写对应m文件如下:clear all;I=checkerboard(30,6);subplot(1,2,1)imshow(I);title('原始图像');theta=pi/3;T=[cos(theta) -sin(theta);sin(theta) cos(theta);0 0];K=maketform('affine',T);I1=imtransform(I,K,'bicubic','FillValues',0.9);subplot(1,2,2)imshow(I1);title('旋转变换图像');程序运行结果如下图:

5

图像的逻辑运算位与运算,bitand函数用于实现图像的位与运算示例:利用bitand函数进行图像位与运算编写对应的m文件如下:clear all;I=imread('peppers.png');subplot(1,3,1)imshow(I);title('原始图像');I1=imdivide(I,3);subplot(1,3,2)imshow(I1);title('相除后图像');I2=bitand(I,I1);subplot(1,3,3)imshow(I2);title('位与运算图像');运行程序结果如下图:

6

图像的逻辑运算位补运算,bitcmp函数用于实现图像的位补运算示例:对图像进行求补运算clear all;I=imread('trees.tif');subplot(1,2,1)imshow(I);title('原始图像');I1=bitcmp(I,8);subplot(1,2,2)imshow(I1);title('位补运算图像');程序运行结果如下图:

7

图像的逻辑运算位或运算,bitor函数用于实现图像的位或运算示例:对图像进行位或运算编写对应m文件如下:clear all;I=imread('peppers.png');subplot(1,3,1)imshow(I);title('原始图像');I1=imdivide(I,3);subplot(1,3,2)imshow(I1);title('相除后图像');I2=bitor(I,I1);subplot(1,3,3)imshow(I2);title('位或运算图像');程序运行结果如下图:

8

图像的逻辑运算位异或运算和位移位运算,bixor函数用于实现图像的位异或运算,bitshift函数用于实现图像位移位运算示例:实现图线位移位运算编写对应m文件如下:clear all;I=imread('trees.tif');subplot(1,2,1)imshow(I);title('原始图像');I1=bitshift(I,3);subplot(1,2,2)imshow(I1);title('位移位运算图像');程序运行结果如下图:

注意事项

如果喜欢,请支持一下,谢谢

推荐信息