数字水印实验1 用于数字图像处理的MATLAB基础知识

【实验名称】用于数字图像处理的MATLAB基础知识   

 

【实验目的】

1、学习并掌握MATLAB的基本语法和操作

2、学习用于数字图像处理的MATLAB基础知识

 

【实验原理】

1、图像的读取A=imread(FILENAME,FMT)

2、图像的写入imwrite(A,FILENAME,FMT)

3、图像的显示imshow(I,[low high])

figure;%创建一个新的窗口

figure;subplot(m,n,p);imshow(I);

 

【实验内容】

1、打开MATLAB

2、读取图像(灰度I1、彩色I2),观察图像读取后的数据。

代码:

function ModifyI5()
clc;
%读取灰度图像(I1)和彩色图像(I2)
I1=imread('coverlena.bmp');
I2=imread('EMDstegoimg.bmp');
%由于彩色图像过大,不能直接打开
%将其按RGB三通道分开,便于观察
I2_R=I2(:,:,1);
I2_G=I2(:,:,2);
I2_B=I2(:,:,3);
End

结果:

灰度图像I1部分数据

彩色图像I2的R通道的部分数据:

 

3、在灰度图像中间剪切掉一块方形区域,自定义大小。

代码:

function ModifyI()
clc;
I=imread('coverlena.bmp');
[long,width]=size(I);
%希望截取的边长,截取部分为图像正中心的以limit为边长的区域
limit=100;
%将选定区域截取并保存
i=I((long-limit)/2:(long+limit)/2,(width-limit)/2:(width+limit)/2);
%将原图截取的区域置为白色
I((long-limit)/2:(long+limit)/2,(width-limit)/2:(width+limit)/2)=255;
%绘图并保存为新图片
figure;imshow(I);imwrite(I,'new1-1.bmp');
figure;imshow(i);imwrite(i,'new1-2.bmp');
end

 

结果:

                     

                     截取后图像                                         截取的区域

 

4、在彩色图像中间剪切掉一块方形区域,自定义大小。

代码:

function ModifyI()
I=imread('EMDstegoimg.bmp');[long,width,~]=size(I);
%希望截取的边长,截取部分为图像正中心的以limit为边长的区域
limit=100;
%将选定区域截取并保存
i(:,:,1)=I((long-limit)/2:(long+limit)/2,(width-limit)/2:(width+limit)/2,1);
i(:,:,2)=I((long-limit)/2:(long+limit)/2,(width-limit)/2:(width+limit)/2,2);
i(:,:,3)=I((long-limit)/2:(long+limit)/2,(width-limit)/2:(width+limit)/2,3);
%将原图截取的区域置为红色
I((long-limit)/2:(long+limit)/2,(width-limit)/2:(width+limit)/2,1)=255;
I((long-limit)/2:(long+limit)/2,(width-limit)/2:(width+limit)/2,2)=0;
I((long-limit)/2:(long+limit)/2,(width-limit)/2:(width+limit)/2,3)=0;
%绘图并保存为新图片
figure;imshow(I);imwrite(I,'new2-1.bmp');
figure;imshow(i);imwrite(i,'new2-2.bmp');
end

结果:

                 

                                            截取后图像                                                                         截取的区域

 

5、再继续读取一幅图像I3,裁剪合适大小,填充到刚才中间剪切掉的灰度和彩色图像中。

代码:

function ModifyI()
clc;
%读取两张已经被截取过的图片和一张新灰度图片
I1=imread('new1-1.bmp');
I2=imread('new2-1.bmp');
I3=imread('qrcode.bmp');
[long1,width1]=size(I1);
[long2,width2,~]=size(I2);
[long3,width3]=size(I3);
%希望截取的边长,截取部分为图像正中心的以limit为边长的区域
limit=100;
%用新灰度图像填充灰度图像I1
I1((long1-limit)/2:(long1+limit)/2,(width1-limit)/2:(width1+limit)/2)=...
    I3((long3-limit)/2:(long3+limit)/2,(width3-limit)/2:(width3+limit)/2);
%用新灰度图像填充彩色图像I2
I2((long2-limit)/2:(long2+limit)/2,(width2-limit)/2:(width2+limit)/2,1)=...
    I3((long3-limit)/2:(long3+limit)/2,(width3-limit)/2:(width3+limit)/2);
I2((long2-limit)/2:(long2+limit)/2,(width2-limit)/2:(width2+limit)/2,2)=...
    I3((long3-limit)/2:(long3+limit)/2,(width3-limit)/2:(width3+limit)/2);
I2((long2-limit)/2:(long2+limit)/2,(width2-limit)/2:(width2+limit)/2,3)=...
    I3((long3-limit)/2:(long3+limit)/2,(width3-limit)/2:(width3+limit)/2);
%绘图并保存为新图片
figure;imshow(I1);imwrite(I1,'new1.bmp');
figure;imshow(I2);imwrite(I2,'new2.bmp');
end

结果:

 

              填充后的灰度图片                            填充后的彩色图片

 

【小结或讨论】

图像的读取(imread)、显示(imshow)、保存(imwrite);

如何彩色图像I的大小(行、列、维数)[Am,An,Az]=size(I);

如何提取彩色图像I的RGB通道像素值

I1=I(:,:,1);I2=I(:,:,2);I3=I(:,:,2)

如何将三个通道数据合并成一个三维矩阵

A(:,:,1)=A1;A(:,:,2)=A2;A(:,:,3)=A3

通过这次实验,我还学习了很多关于图像的基础知识。比如在观察灰度、彩色和黑白图片通道数据时,灰度图像只有一个通道,而彩色图像有RGB三个通道,如果给三个通道都赋一样的值,那么和一个通道的效果是一样的。而且要注意到灰度图像和黑白图像是不同的,黑白图像的数据只有0或255,而灰度图像的数据是在0至255之间,两者的共同点是都只有一个通道,这与彩色图像有着明显区别。。

如果您下载了本程序,但是该程序存在问题无法运行,那么您可以选择退款或者寻求我们的帮助(如果找我们帮助的话,是需要追加额外费用的)。另外,您不会使用资源的话(这种情况不支持退款),也可以找我们帮助(需要追加额外费用) 包括离散余弦DCT和小波变换DWT两种算法的对比,有一个GUI界面,包括嵌入,加噪,旋转,切,压缩等多种攻击,提取候,具有评价指标PSNR,NC等来评价算法的鲁棒性。 MATLAB(Matrix Laboratory)是一款由美国MathWorks公司开发的高性能商业数学软件,它集成了高级技术计算语言、交互式环境以及丰富的工具箱,被广泛应用于工程计算、数据分析、算法开发和科学可视化等领域。MATLAB的核心功能包括: 1. **数值计算**:支持大规模矩阵和数组运算,对线性代数、微积分、概率统计等数学问题提供高效解决方案。 2. **编程环境**:提供了易于使用的脚本编写与函数定义界面,支持面向对象编程,并可通过M文件实现模块化程序设计。 3. **数据可视化**:内置强大的二维和三维图形绘制功能,能够创建高质量的数据图表,便于数据分析和结果展示。 4. **工具箱扩展**:MathWorks为MATLAB提供了众多领域的专业工具箱,如信号处理、图像处理、通信系统、控制系统、机器学习、深度学习、量化金融、优化算法等,极大地扩展了MATLAB的应用范围。 5. **Simulink仿真**:作为MATLAB的重要组成部分,Simulink是一个动态系统建模、仿真和基于模型的设计环境,特别适用于多域物理系统和嵌入式系统的模拟和实时测试。 6. **集成能力**:MATLAB可以与其他编程语言(如C、C++、Java、Python等)及外部应用程序进行数据交换和联合开发,也可以调用硬件接口进行实时实验和控制。 7. **交互式工作空间**:用户可以在命令窗口中直接输入表达式并立即得到结果,这种交互式的特性使得快速原型设计和调试变得极为便利。 总之,MATLAB是科学家、工程师和技术人员进行科研、教育和工业应用不可或缺的强大工具之一,尤其在需要大量数值计算和复杂系统建模的场景下发挥着重要作用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值