数字图像处理入门

来源:互联网 发布:2心淘宝号一个月刷几单 编辑:程序博客网 时间:2024/06/05 03:54

转自:http://www.ilovematlab.cn/thread-164340-1-1.html

基本概念一点通

从理论上讲,图像是一种二维的连续函数,然而在计算机上对图像进行数字处理的时候,首先必须对其在空间和亮度上进行数字化,这就是图像的采样和量化的过程。空间坐标(x,y)的数字化称为图像采样,而幅值数字化称为灰度级量化。
对一幅图像采样时,若每行(横向)采样数为M,每列(纵向)采样数为N,则图像大小为M*N个像素, f(x,y)表示点(x,y) 处的灰度值,则F(x,y)构成一个M*N 实数矩阵
****************************
经验分享:“像素”的英文为“pixel”,它是“picture”和“element”的合成词,表示图像元素的意思。我们可以对“像素”进行如下理解:像素是一个面积概念,是构成数字图像的最小单位。
****************************
把采样后所得的各像素灰度值从模拟量到离散量的转换称为图像灰度的量化。量化是对图像幅度坐标的离散化,它决定了图像的幅度分辨率。
量化的方法包括:分层量化、均匀量化和非均匀量化。分层量化是把每一个离散样本的连续灰度值只分成有限多的层次;均匀量化是把原图像灰度层次从最暗至最亮均匀分为有限个层次,如果采用不均匀分层就称为非均匀量化。
当图像的采样点数一定时,采用不同量化级数的图像质量不一样。量化级数越多,图像质量越好;量化级数越少,图像质量越差。量化级数小的极端情况就是二值图像。
****************************
经验分享:“灰度”可以认为是图像色彩亮度的深浅。图像所能够展现的灰度级越多,也就意味着图像可以表现更强的色彩层次。如果把黑——灰——白连续变化的灰度值量化为256个灰度级,灰度值的范围为0~255,表示亮度从深到浅,对应图像中的颜色为从黑到白。
****************************
因此,对数字图像进行处理,也就是对特定的矩阵进行处理。在C语言中,对M×N数字图像处理的核心代码如下:
for (j=1;j<N+1;j++)
   for(i=1;i<M+1;i++)
   { 对I(i,j)的具体运算
};
在Matlab中,对M×N数字图像处理的核心代码如下:
for i=1:N
    for j=1:M
      对I(i,j)的具体运算
    end

end


一幅数字图像可以用一个矩阵来表示,对数字图像进行处理,实质上就是对特定的图像矩阵进行变换的过程,因此,图像变换是数字图像处理技术的基础。
图像变换的方法林林总总,多种多样。包括空间域变换、频率域变换、时频域变换、基于经典数学理论的变换、基于现代数学理论的变换。
以下程序段是用于图像放缩(空间变换)的MATLAB源程序:
*********************************************************************
function newImage=resample1(image,newRow,newCol)
% 功能:对图像进行缩放
% 输入:image-需要进行缩放的灰度图像;
% newRow-缩放后新图像的行数;
% newCol-缩放后新图像的列数;
% 输出:newImage-缩放后的图像。

[row,col]=size(image);
image_larger=zeros((row+1),(col+1));
image_larger(1:row,1:col)=image;
image=image_larger;
newImage=zeros(newRow,newCol);
for i=0:(newRow-1)
for j=0:(newCol-1)
x=j*(col-1)/(newCol-1);
y=i*(row-1)/(newRow-1);
fx=floor(x);
fy=floor(y);

area_ul=(x-fx)*(y-fy);
area_ur=(fx+1-x)*(y-fy);
area_bl=(x-fx)*(fy+1-y);
area_br=(fx+1-x)*(fy+1-y);

newImage(i+1,j+1)=...
image(fy+1,fx+1)*area_br+...
image(fy+1,fx+2)*area_bl+...
image(fy+2,fx+1)*area_ur+...
image(fy+2,fx+2)*area_ul;
end
end
*********************************************************************
在MATLAB中,图像的缩放也可以调用imresize函数来实现。imresize函数的调用格式如下:
B = imresize(A,m,method)
imrersize函数使用由参数method指定的插值运算来改变图像的大小。method的几种可选值: 'nearest'(默认值)最近邻插值; 'bilinear'双线性插值; 'bicubic'双三次插值; B = imresize(A,m)表示把图像A放大m倍。

3 0