欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 编程资源 > 编程问答 >内容正文

编程问答

9.3 图像变换(尺寸变换、旋转变换、灰度变换和数据类型变换)

发布时间:2025/4/16 编程问答 60 豆豆
生活随笔 收集整理的这篇文章主要介绍了 9.3 图像变换(尺寸变换、旋转变换、灰度变换和数据类型变换) 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

1、图像尺寸变换:imresize函数
功能:缩放图像
格式:B = imresize(A, m)
B = imresize(A, [nrow ncol],method)

返回图像B是原图像A的m倍,m大于1时放大图像,m小于1 时缩小图像。nrow和ncol为目标图像的高度和宽度。method改变图像时所用算法: ’ nearest’:最近邻插值算法;‘bilinear’:双线性插值算法;‘bicubic’: 双三次插值算法。

例1:图像尺寸变换

I = imread('xueren.png'); figure subplot(1,2,1); imshow(I); %子图1显示原图 subplot(1,2,2); J = imresize(I,0.25); imshow(J); %子图2显示缩小的图像,为了保持和子图1的大小相同,缩小后的图片放大后分辨率降低

2、图像旋转变换:imrotate函数
功能:将图像旋转为若干角度
格式:bw=imrotate(I,r, p)
I为要旋转的图像矩阵,r为旋转角度,p为参数
例2:图像旋转变换

I = imread('cat.png'); subplot(1,2,1); imshow(I); %显示原图 title('原图1'); subplot(1,2,2); J = imrotate(I,30,'crop'); %crop是指旋转图像时,图像底板大小保持不变 imshow(J); %显示旋转30°的图像 title('原图旋转30°');

I = imread('cat.png'); for i=1:10J = imrotate(I,36*i,'crop'); %将原图旋转10次,每次旋转读书为36的倍数subplot(2,5,i);imshow(J); end

3、图像灰度变换:imhist函数、histeq函数、imadjust函数
(1)imhist函数
功能:用于获取图像数据的灰度直方图,即统计图中256个灰度级在图像中出现的次数
格式:imhist(I)、imhist(I,n)
I为灰度图像,n为指定的灰度级

例3:获得图像的灰度直方图

I = imread('sheep.png'); J = rgb2gray(I); subplot(1,3,1) imshow(J); %显示灰度图 title('灰度图'); subplot(1,3,2) imhist(J); %显示256灰度直方图 title('256灰度直方图'); subplot(1,3,3) imhist(J,42); %显示42灰度直方图 title('42灰度直方图');


(2)histeq函数
功能:通过直方图均衡化来增加灰度图像对比度,使得图像更加清晰(通常用在医学上更加有利于发现病变的位置)。
格式:J = histeq(I)

例4:将灰度图进行直方图均衡化,并观察直方图变化情况。

I = imread('lion.png'); J = rgb2gray(I); subplot(1,2,1) imshow(J); %显示灰度图 subplot(1,2,2) Q = histeq(J); imshow(Q); %显示灰度图均衡化

I = imread('lion.png'); J = rgb2gray(I); subplot(2,2,1) imshow(J); %显示灰度图 title('原图'); subplot(2,2,2) imhist(J); %显示灰度直方图 title('原图直方图'); subplot(2,2,3) Q = histeq(J); imshow(Q); %显示灰度图均衡化 title('均衡化图'); subplot(2,2,4) imhist(Q); %显示直方图均衡化后的灰度直方图 title('均衡化后直方图');


(3)imadjust函数
功能:灰度图像的灰度转换
格式:J = imadjust(I)
g=imadjust(f,[low-in high-in],[low_ out high out])
输入灰度low_ in~ high in ,输出灰度low out ~ high_ out;
输入灰度小于low in,则输出灰度为low_ out;
输入灰度大于high_ in, 则输出灰度为high_ out;
将low_ in 至high_ in间 值映射到low out至high_ out间值。

I = imread('lion.png'); J = rgb2gray(I); subplot(1,3,1) imshow(J); %显示灰度图 %title('原图'); subplot(1,3,2) J1 = imadjust(J,[0 1],[1 0]); %将输入灰度0转化为输出灰度1,将输入灰度1转化为输出灰度0 imshow(J1); subplot(1,3,3) J2 = imadjust(J,[0.5 0.75],[0 1]); %将输入灰度0.5转化为输出灰度0,将输入灰度0.75转化为输出灰度1 imshow(J2);

4、图像数据类型变换:im2uint8 函数、im2uint16函数、im2double函数

图像类型与数据类型间的转换
● im2uint8 :将输入中所有<0转换为0,所有> 1转换为255,其他的乘以255
● im2uint16 :将输入中所有<0转换为0,所有> 1转换为65535
● im2double :将输入转换为double类。
若输入是uint8、uintl 6或logical则转换为[0,1 ]间的类
若输入是double,则返回与输入相等的矩阵

I = imread('cat.png'); I8 = im2uint8(I); %转化为8位无符号数据类型,数据范围在[0 255]之间 I16 = im2uint16(I); %转化为16位无符号数据类型,数据范围在[0 65535]之间 Id = im2double(I); %转化为双精度数据类型,数据范围在[0 1]之间

总结

以上是生活随笔为你收集整理的9.3 图像变换(尺寸变换、旋转变换、灰度变换和数据类型变换)的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。