概述
一、图像基本操作
- 图像读取及显示
- 图像写入
1.一般图像写入:imwrite(x,'filename','permission');permission图像存储类型,例如:imwrite(x,'lena22.bmp','bmp');
2.索引图像写入:imwrite(data,map,'filename','permission);例如:imwrite(data,map,'woman22.bmp','bmp');
- 图像数据存储及加载
可以将现有变量存储为数据文件格式,利用 load函数命令,进行数据加载。‘save x ;’存储变量 x 为 x.mat 格式数据文件,数据变量与数据文件名称相同;‘load a.mat ;’加载 a.mat 数据文件,生成数据变量 a,数据文件与数据变量名称相同。
- 图像格式转换
1.将灰度图像根据不用阈值转换为二值图像
gray=imread('rgb_to_gray.bmp');
gray_to_binary1=im2bw(gray,0.5);
gray_to_binary2=im2bw(gray,0.4);
gray_to_binary3=im2bw(gray,0.7);
gray_to_binary4=im2bw(gray,0.2);
2.将彩色图像转换为灰度图像
rgb=imread('lena_rgb.bmp');
rgb_to_gray=rgb2gray(rgb);
- 灰度图像直方图显示
灰度图像的直方图事是图像的亮度分布的概率密度函数,是一幅图像的所有象素集合的最基本的统计规律,它反映的是图像的灰度值的分布情况。‘imhist(gray);’将原图像 I 直方图显示‘imhist(gray,4);’将原图像 I 直方图显示为 n 级灰度。
- 图像加减运算-两幅图像加减运算,必须保证图像大小一致
1.图像相加运算(imadd)
a) 完成两幅图像的相加运算。例如:‘testadd=imadd(gray,y);’ 要求 x 与 y 矩阵大小一致
b) 彩色图像 RGB 分通道显示,选定某一通道进行单通道颜色加强(图像数据矩阵与常数相加)。
rgb_r=rgb(:,:,1);
rgb_g=rgb(:,:,2);
rgb_b=rgb(:,:,3);
rgb_b_add=rgb_b+88;
new_rgb(:,:,1)=rgb_r;
new_rgb(:,:,2)=rgb_g;
new_rgb(:,:,3)=rgb_b_add;
2.图像相减运算(imsubtract)
a) 完成两幅图像的相减运算。例如:‘testsub=imsubtract(gray,y);’要求 x 与 y 矩阵大小一致
b) 将图像数据减去一个常数。例如:‘gray_sub=gray-44;’
- 图像几何变换
1.图像的插值缩放
a) 最近邻插值:输出像素的赋值为当前点的像素点。
b)双线性插值:输出像素的赋值为 2×2 矩阵所包含的有效点的加权平均值。
c) 双三次插值:输出像素的赋值为 4×4 矩阵所包含的有效点的加权平均值。
y1=imresize(y,1.5,'nearest'); %利用最近邻插值方法将 I 放大 1.5倍
y2=imresize(y,1.5,'bilinear'); %利用双线性插值方法将 I 放大 1.5倍
y3=imresize(y,1.5,'bicubic'); %利用双三次插值方法将 I 放大 1.5 倍
2.插值旋转
gray1=imrotate(gray,30,'nearest') % 利用最近邻插值方法将 I 逆时针旋转 30 度
gray2=imrotate(gray,30,'bilinear','crop') % 利用双线性插值方法将 I 逆时针旋转 30 度,大小保持不变。
3.图像的剪切
gray3=imcrop(gray,[40,50,200,200]); %给定大小剪切,前切起始位置为(40,50),大小为200*200
gray4=imcrop(gray); %利用鼠标交互对图像进行剪切
- 图像拼接-水平拼接,要求两幅图像行数相同;垂直拼接,要求两幅图像列数相同
‘gray22=cat(2,gray,gray);’实现图像的水平拼接、垂直拼接,A1 和 A2 为读入的图像矩阵。
二、数字水印生成
- 生成伪随机数
‘rand('state',0); ’生成伪随机数种子,‘r=rand(m,n); ’生成m行n列的0-1区间的伪随机数,将伪随机数二值化时,建议设定阈值(0.5),将伪随机数转化为0和1。
%灰度图像二值化
gray_to_binary_w=im2bw(w);
imshow(gray_to_binary_w);
rand('state',0);%随机数初值为1
r=rand(512,512);%生成512*512的随机数矩阵
%伪随机数矩阵二值化
r(r<0.5)=0;
r(r>0.5)=1;
- 读入水印图像
a) 读入灰度图像,并将其二值化。
b) 直接读入二值水印图像
- 水印图像与伪随机数调制-水印加密
‘z=xor(gray_to_binary_w,r);’,w为二值水印图像,x为伪随机数,z为加密后的二值水印图像,xor为异或运算。
- 加密后水印图像解密
通过判断加密后的水印图像与伪随机数的异同,判断原始水印数据。
%解密
w1=xor(z,r);
imshow(w1);
最后
以上就是细心保温杯为你收集整理的Matlab-图像处理及数字水印生成的全部内容,希望文章能够帮你解决Matlab-图像处理及数字水印生成所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复