1.什么是数字图像?数字图像处理有哪些特点?
答: 数字图像是由有限的元素组成,每一个像素的空间位置(x,y)和强度值f都被量化成离散的数值,这些元素称为像素。因此,数字图像是具有离散值的二维像素矩阵,能够存储在计算机存储器里面,方便处理。
量化:对模拟图像进行采样之后所得到的小图像块的像素值仍然是连续的,所以要对其像素值进行离散化处理,即量化。
数字图像处理特点:
1、信息量大。数字图像处理的信息大多数是二维信息,是由图像矩阵中的像素组成的,而每个像素是由红、绿、蓝三种颜色表示的,每种颜色用8位表示灰度级,一幅没有经过压缩的1024X768的真彩图像,它的数据可以达到2M。所以庞大的数据量给数字图像的存储、传输、处理都带来了困难。
2、处理精度高,再现性好。用计算机处理图像数据,其实实质就是对图像数据进行各种运算,当然这是色彩的运算。现代的扫描仪可以把每个像素的灰度等级量化为16位甚至更高,这就意味着图像的数字化精度可以达到满足任何应用需求。
3、适用面宽。图像可以来自各种信息源。他们可以是可见光图像,也可以是不可见的光谱图像。
4、效果易于控制。在数字图像处理过程中,可以任意的改变参数,有效的控制处理过程。比如可以在PS软件中进行色相/饱和度的参数调节,从而达到预计的效果。
5、处理费时间。这点很好理解,由于数据量大,处理所需要的时间也是很多的。如果处理一个像素需要1毫秒,那么处理700X500像素的数据就将需要花费大约6分钟的时间。
6、灵活性高。图像处理大体上可以分为图像的画质改善,图像分析和图像的重建。这三部分都包含丰富的内容。
7、数字图像受人的因素影响较大。因为处理图像一般是给人观察和评价的,由于每个人的视觉系统很复杂,受环境、光线、视觉性能等诸多因素的影响。
img = imread('E:\photo\matlabtest\testone.jpg'); %读取grb格式的图像
rect = [300 300 1000 1000]; %构建裁剪起始位置以及大小。
imgcrop = imcrop(img,rect); %调用函数
imgcaijian = img(1:1250,1:720,:);
imgbw = img(:,:,1); %直接取r,g,b其中一个二维矩阵,1,2,3,都可以。
first = rgb2gray(img); %用函数进行灰度变换,其实就是加权平均方法, 0.299 * R + 0.587 * G + 0.114 * B
[rows,cols,colors]=size(img); %得到原来图像的矩阵的参数
second = zeros(rows,cols); %创建一个同样大小的全零矩阵,用来存储下面的图像
second = uint8(second); %将全零矩阵变为uint8格式,因为上面创建之后默认为double.
%平均值法 得到较为柔和的
for i = 1 : rows %遍历行
for j = 1: cols %遍历列
sum = 0;
for k = 1 : colors %遍历三种颜色
sum = sum + img(i,j,k)/3; %进行转化,每次sum不能超过255
end
second(i,j) = sum; %赋值给像素点
end
end
%最大值法 得到亮度较高的
maxx = zeros(rows,cols); %创建一个同样大小的全零矩阵,用来存储下面的图像
maxx = uint8(maxx); %将全零矩阵变为uint8格式,因为上面创建之后默认为double.
for i = 1 : rows
for j = 1 : cols
maxx(i,j) = max(img(i,j,:)); %取最大值
end
end
%加权平均值法转化的图像
jiaquan = zeros(rows,cols); %创建一个同样大小的全零矩阵,用来存储下面的图像
jiaquan = uint8(jiaquan); %将全零矩阵变为uint8格式,因为上面创建之后默认为double.
for i = 1 : rows
for j = 1 : cols
jiaquan(i,j) = img(i,j,1) * 0.3 + img(i,j,2) * 0.3 + img(i,j,3) * 0.4; %加权求值
end
end
imwrite(jiaquan,"加权图像.jpeg");%保存图像为加权图像.jpeg)
figure();
subplot(2,4,1),imshow(img),title("原图");
subplot(2,4,2),imshow(imgbw),title("取任意一维");
subplot(2,4,3),imshow(imgcrop),title("裁剪的图像");
subplot(2,4,4),imshow(first),title("内置函数");
subplot(2,4,5),imshow(second),title("平均值法");
subplot(2,4,6),imshow(maxx),title("最大值法");
subplot(2,4,7),imshow(jiaquan),title("加权");
subplot(2,4,8),imshow(imgcaijian),title("裁剪");
并且在当前目录保存了加权图像。