【数字图像处理】实验(1)——图像基本变换

本文介绍了使用Matlab进行图像处理的实验,包括色彩通道互换、灰度化、图像旋转与放大等操作。实验中探讨了不同插值方法对图像质量的影响,以及代数运算如拼接、加减乘除在图像处理中的应用。此外,还涉及到图像的YCbCr、HSV空间转换和双线性插值的自定义实现。
摘要由CSDN通过智能技术生成

一、实验意义及目的

(1)了解和掌握图像处理工具Matlab,熟悉基于Matlab的图像处理函数,并为下一步编程进行图像处理打下基础。
(2)理解色彩的概念,掌握图像代数运算,几何变换方法。

二、实验内容

1.打开一幅彩色图像Image1,使用Matlab图像处理函数,对其进行下列变换:
(1)将Image1色彩通道互换,并显示效果;
(2)将Image1灰度化为gray,并显示灰度化后图像;
(3)采用不同的插值方法实现gray的旋转、放大变换;
(4)打开另一幅彩色图像Image2,和Image1进行代数运算,要求运用拼接、加减乘除等多种技术;
(5)实验要求中的拓展内容。
2. 拓展内容:
(1)将彩色图像采用不同的灰度化方法实现灰度化;
(2)将彩色图像变换到 YCbCr、HSV 空间,熟悉各分量数据并显示;
(3)不采用 Matlab 函数,自行设计基于双线性插值的图像放大程序。

三、实验原理

1.灰度线性变换就是将图像中所有点的灰度按照线性灰度变换函数进行变换。
2.直方图均衡化通过点运算将输入图像转换为在每一级上都有相等像素点数的输出图像。
3.图像算术运算:两幅输入图像之间进行的点对点的加、减、乘、除运算后得到输出图像的过程。
4.图像插值是一种基本的图像处理方法,它可以为数字图像增加或减少像素的数目。
当图像被放大时,像素会相应地增加,该像素增加的过程实际就是插值程序自动选择信息较好的像素作为新的像素以弥补空白像素空间的过程。虽然经过插值后图像可以变得更平滑、干净,但由于新增加的像素也仅仅只是原始像素的某种组合而已,所以图像的插值运算并不会增加新的图像信息。
插值图像提供坐标–>计算该坐标在原始图像中的对应坐标–>原始图像返回像素值并进行插值运算双线性插值法充分利用了邻域像素的不同占比程度而计算得出最合适的插值像素,从而完成插值。相比较于最近邻插值,双线性插值的插值效果要好得多,因为最近邻插值只跟(x,y)最近的像素值有关,而双线性插值是按照(x,y)上下、左右四个像素值的重要程度进行插值的(即越接近越重要)。

四、Matlab相关函数介绍

(1)imread函数
功能:实现多种类型图像文件的读取,如:BMP、GIF、JPEG、PNG、RAS等。
调用格式:A = imread(filename, fmt)。filename为图像文件名,可以是灰度图像,也可以是彩色图像,如果文件不在当前目录或不在Matlab目录下,则需要列全文件路径。fmt为文件的扩展名,指定文件类型。A为图像数据矩阵。
(2)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的当前目录下。
(3)imwrite函数
功能:实现图像文件的保存。
调用格式:
imwrite(A,’filename’,fmt):A是要保存的图像数据矩阵,filename是文件名,fmt是文件格式。
imwrite(X,map,’filename’,fmt):X为索引图像的数据矩阵,map为其颜色映射表。
(4)rgb2hsv函数
功能:实现RGB数据图像向HSV数据图像的转换。
调用格式:
HSV = rgb2hsv(RGB)。RGB为RGB彩色图像,为3维矩阵;HSV为3维HSV图像矩阵,3维依次为H、S、V,取值均在[0,1]范围内。
(5)rgb2ycbcr函数
YCBCR = rgb2ycbcr(RGB) :实现RGB数据图像向YCbCr数据图像的转换。
(6)rgb2gray函数
功能:彩色图像灰度化。
调用格式:
I = rgb2gray(RGB):真彩色RGB图像变换为灰度图像I。
NEWMAP = rgb2gray(MAP):变换索引图像的调色板为灰度调色板。
(7)imrotate函数
功能:实现图像旋转。
调用格式:
B = imrotate(A,ANGLE,METHOD,BBOX):A为要进行旋转的图像;ANGLE为要旋转的角度()逆时针为正,顺时针为负;METHOD为图像旋转插值方法,可取“‘nearest’, ‘bilinear’, ‘bicubic’”,默认为nearest;BBOX指定返回图像大小,可取“crop”,输出图像B与输入图像A具有相同的大小,对旋转图像进行剪切以满足要求;可取“loose”,默认是,B包含整个旋转后的图像。
(8)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)):对索引图像进行成比例缩放。
(9)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’”。
(10)fliplr函数
B=fliplr(X):实现二维矩阵X沿垂直轴的左右翻转。
(11)flipud函数
B= flipud(X):实现二维矩阵X上下翻转。
(12)flipdim函数
B=flipdim(X,DIM):使矩阵X按特定轴翻转,dim指定翻转方式:为1表示按行翻转;为2表示按列翻转。
(13)permute函数
B = permute(A,ORDER):按照向量ORDER指定的顺序重排A的各维,B中元素和A中元素完全相同,但在A、B访问同一个元素使用的下标不一样。order中的元素必须各不相同。
(14)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’)。
(15)imsubtract函数
功能:实现两幅图像相减。
调用格式:
C=imsubtract(A,B):差值结果小于0的赋值为0,对A、B的要求同imadd相同。
C=imabsdiff(A,B):差值结果取绝对值。
(16)immultiply 函数
C=immultiply(A,B):实现两幅图像相乘。
(17)imdivide函数
C=imdivide(A,B) :实现两幅图像相除。

五、代码及结果

(1)将Image1色彩通道互换,并显示效果;

代码:

Image1=imread('peppers.jpg');
%红绿通道互换
Image2=Image1;
Image2(:,:,1)=Image1(:,:,2);
Image2(:,:,2)=Image1(:,:,1);
imshow(Image2);
imwrite(Image2,'changecolor.jpg');

结果:
在这里插入图片描述
在这里插入图片描述

(2)将Image1灰度化为gray,并显示灰度化后图像;

代码:

Image1=imread('peppers.jpg');
%灰度化
gray=rgb2gray(Image1);
figure;
subplot(121),imshow(Image1),title('Original Image');
subplot(122),imshow(gray),title('Gray Image');
imwrite(gray,'grayimage.jpg');

结果:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

虚神公子

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值