本文章包含以下内容:
(1)读入图像football.jpg。
(2)了解图像文件的信息:FileName(文件名)、FileModdate(修改时间)、FileSize(文件大小)、Format(文件格式)、FormatVersion(版本)、Width(图像宽度)、Height(高度)、BitDepth(每个像素的位深度)、ColorType(彩色类型)、CodingMethod(编码方法)等。
(3)计算读入图像的二维相关系数(corr2函数),确定像素颜色值(impixel函数),确定像素的平均值(mean2函数),显示像素的信息(impixelinfo函数),计算像素的标准偏移(std2函数)等.
(4)对图像加均值为0,方差为0.01的高斯白噪声形成有噪声的图像J1,即“J1=imnoise(J,’gaussian’,0,0.01)”,计算噪声图像的像素总数、图像灰度的平均值、标准差、J和J1的协方差和相关系数。
如果将方差加至0.1,重新统计参数。
(5)改变图像的尺寸(imresize函数),旋转图像(imrotate函数),对图像进行裁剪(imcrop函数),再对操作后的图像进行像第(4)步的统计。
代码如下:(可全部放到 function U() 中)
function U()
clear;
clc;
fprintf('图片信息:\n');
disp(imfinfo('football.jpg')) %显示图片信息
img1 = imread('football.jpg'); %读取图片到 img
figure('Name', '显示真彩色图像') %开一个标题为“显示真彩色图像”的窗口
imshow(img1); %显示图片
img2 = rgb2gray(img1); %RGB转化为灰度图像
%计算读入图像同自己的二维相关系数
fprintf('读入图像的二维相关系数: %f \n',corr2(img2,img2));
fprintf('请在图片上选择需要得到像素值的点,之后按下回车');
c = impixel(); %确定像素颜色值
fprintf('选定像素的颜色值为:\n');
disp(c);
fprintf('像素的平均值为:');
disp(mean2(img1)); %计算像素的平均值
impixelinfo
fprintf('已开启显示像素的信息');
fprintf('\n像素的标准偏移为:');
disp(std2(img1)); %计算像素的标准偏移
figure('Name', '显示灰度图像') %开一个标题为“显示灰度图像”的窗口
imshow(img2); %显示图片
impixelinfo
figure('Name', '显示噪声图像') %开一个标题为“显示噪声图像”的窗口
zaosheng(img2,0.01,1); %方差为0.01的高斯白噪声形成有噪声的图像
zaosheng(img2,0.1,2); %方差为0.1 的高斯白噪声形成有噪声的图像
figure('Name', '显示变换图像') %开一个标题为“显示变换图像”的窗口
img3=imcrop(imresize(img2,[500,400]),[0, 0, 320, 256]); %改变图像的尺寸
fprintf('===================================================\n');
fprintf('改变图像的尺寸为[500,400]后裁剪:\n');
bianhuanshuchu(img3,img2,1)
img3=imresize(imrotate(img2,60),[256,320]); %旋转图像
fprintf('===================================================\n');
fprintf('旋转图像90°:\n');
bianhuanshuchu(img3,img2,2)
img3=imresize(imcrop(img2,[40, 32, 160, 128]),[256,320]); %裁剪图像
fprintf('===================================================\n');
fprintf('裁剪图像[40, 32, 160, 128]区域:\n');
bianhuanshuchu(img3,img2,3)
function zaosheng(im,c,x)
im2=imnoise(im,'gaussian',0,c); %有噪声的图像
subplot(1,2,x)
imshow(im2); %显示图片
impixelinfo
fprintf('===================================================\n');
fprintf('方差为%f的噪声图像:\n',c);
tongji(im,im2);
function bianhuanshuchu(img,im,x)
subplot(1,3,x)
imshow(img); %显示图片
impixelinfo
tongji(im,img);
function tongji(im,im2)
fprintf('像素总数: %d \n',numel(im2)); %计算像素总数
fprintf('灰度的平均值为:%f\n',mean2(im2)); %计算灰度的平均值
fprintf('图像的标准差为:%f\n',std2(im2)); %计算图像的标准差
%计算灰度图像和输入图像的协方差
fprintf('灰度图像和该图像的协方差: \n');
disp(cov(double(im),double(im2)));
%计算灰度图像和输入图像的二维相关系数
fprintf('灰度图像和该图像的二维相关系数: %f \n\n',corr2(im,im2));
结果示例:
图片信息:
Filename: 'C:\Program Files (x86)\MATLAB71\toolbox\images\imdemos\football.jpg'
FileModDate: '01-Mar-2001 16:52:38'
FileSize: 27130
Format: 'jpg'
FormatVersion: ''
Width: 320
Height: 256
BitDepth: 24
ColorType: 'truecolor'
FormatSignature: ''
NumberOfSamples: 3
CodingMethod: 'Huffman'
CodingProcess: 'Sequential'
Comment: {}
读入图像的二维相关系数: 1.000000
请在图片上选择需要得到像素值的点,之后按下回车选定像素的颜色值为:
168 138 138
像素的平均值为: 77.5170
已开启显示像素的信息
像素的标准偏移为: 44.2095
===================================================
方差为0.010000的噪声图像:
像素总数: 81920
灰度的平均值为:74.588953
图像的标准差为:44.125045
灰度图像和该图像的协方差:
1.0e+003 *
1.3782 1.3521
1.3521 1.9470
灰度图像和该图像的二维相关系数: 0.825428
===================================================
方差为0.100000的噪声图像:
像素总数: 81920
灰度的平均值为:82.510181
图像的标准差为:72.033990
灰度图像和该图像的协方差:
1.0e+003 *
1.3782 1.1152
1.1152 5.1889
灰度图像和该图像的二维相关系数: 0.417033
===================================================
改变图像的尺寸为[500,400]后裁剪:
像素总数: 81920
灰度的平均值为:85.962500
图像的标准差为:45.433291
灰度图像和该图像的协方差:
1.0e+003 *
1.3782 -0.2472
-0.2472 2.0642
灰度图像和该图像的二维相关系数: -0.146551
===================================================
旋转图像90°:
像素总数: 81920
灰度的平均值为:39.127881
图像的标准差为:45.914070
灰度图像和该图像的协方差:
1.0e+003 *
1.3782 0.9906
0.9906 2.1081
灰度图像和该图像的二维相关系数: 0.581143
===================================================
裁剪图像[40, 32, 160, 128]区域:
像素总数: 81920
灰度的平均值为:104.494055
图像的标准差为:54.283705
灰度图像和该图像的协方差:
1.0e+003 *
1.3782 0.1799
0.1799 2.9467
灰度图像和该图像的二维相关系数: 0.089295