2019-10-28 22:03:28 jiangjiang77 阅读数 27

MATLAB图像处理基础知识代码MATLAB

%%通过抖动来增强图像的色彩对比度
clear all;
close all;
a=imread(‘cameraman.tif’);
BW=dither(a);%通过抖动转换为二值图像来增强色彩对比度
subplot(121);
imshow(a);
subplot(122);
imshow(BW);

%%获取图像信息
clear all;
close all;
info=imfinfo(‘trees.tif’,‘tif’)

%%改变图像格式
clear all;
close all;
RGB=imread(‘trees.tif’,‘tif’);
figure(1);
subplot(121)
imshow(RGB)
imwrite(RGB,‘mytrees.png’,‘png’);
tupian=imread(‘mytrees.png’);
subplot(122)
imshow(tupian);

%%读取图像中某些帧
clear all;
close all;
a1=imread(‘mri.tif’,5);%第5帧
a2=imread(‘mri.tif’,25);%第25帧
figure
subplot(121);
imshow(a1);
subplot(122);
imshow(a2);
set(gcf,‘position’,[200,200,500,300]);

%%查看图像位置
which mri.tif

%%同时显示多帧图像
clear all;
close all;
mri=uint8(zeros(128,128,1,25));
for i=1:25 %25帧
[mri(:,:,:,i),map]=imread(‘mri.tif’,i);
end
montage(mri,map);%同时显示多帧图像

%%讲多帧图像转为电影
clear all;
close all;
mri=uint8(zeros(128,128,1,25));
for i=1:25
[mri(:,:,:,i),map]=imread(‘mri.tif’,i);
end
mov=immovie(mri,map);
implay(mov);

%%图像相加
clear all;
close all;
a=imread(‘rice.png’);
b=imread(‘cameraman.tif’);
c=imadd(a,b,‘uint16’);
imshow(c,[]);
set(gcf,‘position’,[400,400,600,600]);

%%图像相减 减去常数颜色变暗
clear all;
close all;
a=imread(‘cameraman.tif’);
b=imsubtract(a,90);
imshow(b);

%%图像相乘
clear all;
close all;
a=imread(‘cameraman.tif’,‘tif’);
% a=imread(‘cameraman.tif’);
b=immultiply(a,0.6);
subplot(121);
imshow(a);
subplot(122);
imshow(b);

%%图像相除 维数要一样
clear all;
close all;
x=uint8([222 50 21;56 77 89]);
y=uint8([66 66 66;66 66 66]);
z=imdivide(x,y)
% imshow(z)

%%两幅图像的绝对差异
clear all;
close all;
a=imread(‘cameraman.tif’);
b=uint8(filter2(fspecial(‘gaussian’),a));%对图像进行滤波
c=imabsdiff(a,b);%获取滤波图像和之前图像的差异
subplot(121);
imshow(a);
subplot(122);
imshow(c,[]);%加[]为了显示清晰

2012-10-06 07:15:57 luoweifu 阅读数 6422

       大家都知道,人类所获取的信息中,大部分都来自视觉,人类用自己的双眼观察世界,发现世界。图像是对客观存在的物体、场景的一种相似性的生动描述。现在在计算机、网络及电子产品看到的图像都属于数字图像。在讲解图像处理之前需要必备一些关于图像处理的基本知识,下面就对一些常用的关于图像处理的基本知识进行讲解。

像素

        像素是基本原色素及其灰度的基本编码。我们看到的数字图片是有一个二维的像素矩阵组成。像素在计算机中通常用3个字节24位保存,如16-23 位表示红色(R)分量,8-15 位表示绿色(G)分量,0-7 位表示蓝色(B)分量;详细信息见下面“计算机颜色模型机RGB”中颜色的表示。

现实世界是三维的,但是我们从现实世界拍摄的图像是二维信息。一张图片可以定义为一个二维函数f(x,y)(x,y)是二维空间中的点坐标,f(x,y)是对应于该点的坐标值,即像素。


        当图片尺寸以像素为单位时,每一厘米等于28像素,比如15*15厘米长度的图片,等于420*420像素的长度。 

一个像素所能表达的不同颜色数取决于比特每像素(BPP)。如8bpp[2^8=256色, 灰度图像]16bpp[2^16=65536色,称为高彩色]24bpps[2^24=16777216色,称为真彩色]

分辨率

       图像总像素的多少,称为图像分辨率。由于图像通常用矩阵表示,所以分辨率常用,m*n表示,其中n表示行数(即一列包含的像素)m表示列数(即一行包含的像素)。如640*480,表示图像的长和宽分别为640480,总像素为640*480=307200(相机中所说的30万分辨率),800*600,表示图像的长和宽分别为800600,总像素为800*600=480000(相机中所说的50万分辨率)。

计算机颜色模型机RGB

       颜色模型,是将颜色表示成数字形式的模型,或者说是一种记录图像颜色的方式。有RGB模型、CMYK模型、HSL模型、Lab颜色模型等,其中最常用的是RGB模型。

RGB

       大家都知道,几乎世界上的所有颜色都可以用红(Red)、绿(Green)、蓝(Blue)三种颜色的不同比例组合形成,红绿蓝被称为三原色。

然而在计算机上他是怎样表示的呢?

在计算机中,RGB三种颜色分别被量化成0255256个等级。这样彩色图像就有256*256*256=16777216种彩色,这种图像被称为全彩色图像(full-color nimage)或真彩色图像(true-color image)。

在图像中每一个像素保存一个颜色值,而每种颜色有RGB三种颜色组合而成。所以颜色可以用R、G、B三种颜色的三维坐标表示,如下图:


       根据以上图像颜色的组成原理,可以把一个图像分解成RGG三种基颜色的灰度图像。如下图:

        

原图1                                                                            1_red

        

1_green                                                                            1_blue

算法代码实现(java):见下面附录1

特别说明:当一张图片各个像素的RGB三种颜色的分量都相同时就是一个无彩色灰度图像。如下图:


1_gray

算法代码实现(java):见下面附录2

附录


附录1:将图片分解成R、G、B三种灰度图片的算法

/**
	 * 将图片分解成R、G、B三种灰度图片
	 */
	public static void analyseRGB() {
		OutputStream output = null;
		try {
			// read image
			BufferedImage img = ImageIO.read(new File("F:\\image processing\\图1.jpg"));
			int imageType = img.getType();
			int w = img.getWidth();
			int h = img.getHeight();
			int startX = 0;
			int startY = 0;
			int offset = 0;
			int scansize = w;
			int dd = w-startX;
			int hh = h - startY;
			int x0 = w / 2;
			int y0 = h / 2;
			//System.out.println("dd:" + dd + "  hh:" + hh);
			// rgb的数组,保存像素,用一维数组表示二位图像像素数组
			int[] rgbArray = new int[offset + hh * scansize
					+ dd];
			//newArray 保存处理后的像素
			int[] newArray = new int[offset + hh * scansize
			     					+ dd];
			img.getRGB(startX, startY, w, h, rgbArray, offset, scansize);
			
			int rgb = rgbArray[offset + (y0 - startY) * scansize
					+ (x0 - startX)];
			Color c = new Color(rgb);
			//System.out.println("中间像素点的rgb:" + c);
			for(int i=0; i<h-startY; i++) {
				for(int j=0; j<w-startX; j++) {
					c = new Color(rgbArray[i*dd + j]);
					//newArray[i*dd + j] = new Color(c.getRed(), 0, 0).getRGB() ;	//红色灰度图像
					//newArray[i*dd + j] = new Color(0, c.getGreen(), 0).getRGB();	//绿色灰度图像
					newArray[i*dd + j] = new Color(0, 0, c.getBlue()).getRGB();	//蓝色灰度图像
				}
			}
			
			// create and save to bmp
			//File out = new File("F:\\image processing\\图1_red.jpg");
			//File out = new File("F:\\image processing\\图1_green.jpg");
			File out = new File("F:\\image processing\\图1_blue.jpg");
			if (!out.exists())
				out.createNewFile();
			output = new FileOutputStream(out);
			BufferedImage imgOut = new BufferedImage(w, h, BufferedImage.TYPE_3BYTE_BGR);
			imgOut.setRGB(startX, startY, w, h, newArray, offset, scansize);
			ImageIO.write(imgOut, "jpg", output);
		} catch (IOException e) {
			e.printStackTrace();
		} finally {
			if (output != null)
				try {
					output.close();
				} catch (IOException e) {
				}
		}
	}


附录2:将图片分解成黑白图片的算法

/**
	 * 将图片分解成黑白图片
	 */
	public static void grayImage() {
		OutputStream output = null;
		try {
			// read image
			BufferedImage img = ImageIO.read(new File("F:\\image processing\\baboom.jpg"));
			int imageType = img.getType();
			int w = img.getWidth();
			int h = img.getHeight();
			int startX = 0;
			int startY = 0;
			int offset = 0;
			int scansize = w;
			int dd = w-startX;
			int hh = h - startY;
			int x0 = w / 2;
			int y0 = h / 2;
			System.out.println("dd:" + dd + "  hh:" + hh);
			// rgb的数组,保存像素,用一维数组表示二位图像像素数组
			int[] rgbArray = new int[offset + hh * scansize
					+ dd];
			//newArray 保存处理后的像素
			int[] newArray = new int[offset + hh * scansize
			     					+ dd];
			img.getRGB(startX, startY, w, h, rgbArray, offset, scansize);
			
			int rgb = rgbArray[offset + (y0 - startY) * scansize
					+ (x0 - startX)];
			Color c = new Color(rgb);
			System.out.println("中间像素点的rgb:" +c+" "+c.getRGB());
			for(int i=0; i<h-startY; i++) {
				for(int j=0; j<w-startX; j++) {
					c = new Color(rgbArray[i*dd + j]);
					//彩色图像转换成无彩色的灰度图像Y=0.299*R + 0.578*G + 0.114*B
					int gray = (int)(0.299*c.getRed() + 0.578*c.getGreen() + 0.114*c.getBlue());
					newArray[i*dd + j] = new Color(gray, gray, gray).getRGB();	//蓝色灰度图像
				}
			}
			
			// create and save to bmp
			File out = new File("F:\\image processing\\baboom_gray.jpg");
			if (!out.exists())
				out.createNewFile();
			output = new FileOutputStream(out);
			BufferedImage imgOut = new BufferedImage(w, h, BufferedImage.TYPE_3BYTE_BGR);
			imgOut.setRGB(startX, startY, w, h, newArray, offset, scansize);
			ImageIO.write(imgOut, "jpg", output);
		} catch (IOException e) {
			e.printStackTrace();
		} finally {
			if (output != null)
				try {
					output.close();
				} catch (IOException e) {
				}
		}
	}


2018-09-28 10:28:07 SaLaHiozzzzz1 阅读数 936

 

 主要记载学习数字图像处理的基本知识,仅供参考。

目录

一、什么是图像处理?

二、图像的数字化表达

三、数字图像处理的基本知识


一、什么是图像处理?

     图像处理就是对图像信息进行加工处理,满足实际的应用需求。

图像处理技术分为两大类:

  • 模拟图像处理
  • 数字图像处理 (本文重点)

     数字图像处理就是利用数字计算机或者其他高速、大规模集成数字硬件,对从图像信息转换来的数字信号进行某些数字运算或者处理,以提高图像的质量。

二、图像的数字化表达

  1、图像的空间表达式:

                                             I=f(x,y,z,\lambda ,t)

        其中,I为图像像素点的强度,(x,y,z)代表图像像素的空间坐标,λ为波长,t为时间。上式为活动的、彩色的、三维的视频图像表达式。因此,对于

  • 静止图像➡与t无关
  • 单色图像➡与λ无关
  • 平面图象➡与z无关

因此,我们主要讨论的平面的、静止的、单色的图像表达式为:

                                                               I=f(x,y)

   2、图像采样

   

      为了适应数字计算机的处理,必须对连续图像函数进行空间和幅值数字化。空间坐标(x,y)的数字化称为图像采样,而幅值数字化被称为灰度级量化。经过数字化后的图像成为数字图像。

  3、数字图像的主要表示方法

   1)灰度图像的阵列表示法

         设连续图像f(x,y)按等间隔取样,排成M\times N阵列(一般取方阵列N\times N),如下图所示

          图像阵列中每个元素(“点”)都是离散值,称为像素(pixel)。一般取阵列N 和灰度级C都是2的整数幂。即取N=2^{n}C=2^{n}.

  2) 二值图像表示法

       二值图像:就是只有黑白两个灰度级,即像素灰度级非1即0.如文字图片。

4、描述数字图像的基本参数

  1)分辨率

图像分辨率:数字化图像的大小,对原始图像的采样分辨率,即该图像水平和垂直方向的像素个数。

屏幕分辨率:显示器屏幕上的最大显示区域,即水平与、垂直方向的像素个数。

像素分辨率:像素的宽和高之比一般为1:1

   2)图像深度

           图像深度:也称图像灰度、颜色深度。表示数字位图图像中每个像素上用于表示颜色的二进制数字位数。

           显示深度:表示显示器上每个点用于显示颜色的二进制数字位数。

             如显示器的显示深度小于数字图像的深度,就会使数字图像颜色的显示失真。

3)图像文件大小

      用字节表示图像文件大小时,一副未经压缩的数字图像的数据量大小计算如下:

         图像数据量大小=像素总数\times图像深度\div8     单位:BYTE

  例如:一副640x640的256色图像为640x480x8/8=307200字节。

三、数字图像处理的基本知识

1、数字图像处理的几个基本目的

  a) 以人为最终的信息接收者,其实主要目的是改善图像的质量

 b)以机器为对象, 目的是使机器或计算机能自动识别目标,称为图像识别

  c)利用计算机系统解释图像,实现类似人类视觉系统理解外部世界,被称为图像理解或计算机视觉。其正确的直接要有知识的引导,与人工智能等学科有密切联系。

 2、数字图像处理的基本特点

  • 处理的大多是二维信息,数据量大
  • 数字图像传输占用的频带较宽
  • 数字图像中像素间的相关性较大,冗余比较多,有利于压缩。
  • 数字处理技术综合性强
  • 图像信息理论与通信理论密切相关
  • 数字图像处理后很多情况是给人观察和评价的,因此受人的因素影响较大。

3、数字图像处理的主要研究内容

  a) 图像变换:如傅里叶变换、沃尔什变化、离散余弦变换等间接处理技术,将空间域的处理转换为变换域处理,不仅可以减少计算量,而且可以获得更有效的处理。目前小波变换在时域和频域中都具有良好的局部化特征,应用广泛。

                                                              (Matlab实现的傅里叶变换) 

  b)图像压缩编码:图像压缩编码技术可以减少图像的数据量,以便节省图像传输、处理时间和减少存储器容量。

  c)图像增强和复原:目的是提高图像的质量,如去除噪声、提高清晰度等。图像增强不考虑图像降质的原因,突出图像中感兴趣的部分。如强化图像高频分量,可使图像中物体轮廓清晰,细节明显。

              (图像复原)                                                                                           (图像增强)   

 d)  图像分割:图像分割是数字图像处理中的关键技术之一。图像分割是将图像中有意义的特征部分提取出来,其有意义的特征有图像中物体的边缘、区域等,这是进一步进行图像识别、分析和理解的基础。

e) 图像描述:图像描述是图像识别和理解的必要前提。二值图像可用几何特性描述:如边界描述和区域描述。

f)  图像分类:图像分类(识别)属于模式识别的范畴,其主要内容就是对图像经过某些出来后进行判决分类。

   图像分类常用方法:

  • 统计模式分类和句法模式分类
  • 模糊模式识别和人工神经网络模式分类  

4、数字图像处理的研究方法

  数字图像处理研究的两个不同层次

  • 人作为图像的接收者(Human readable)

         图像处理研究的目的(包括获取、传输、处理、再现等)为更好满足人类视觉感知的要求,帮助人类改善其视觉能力---传统的图像处理。

  • 计算机代替人作为图像的接收者(Machine readable) 

        由计算机实现人类视觉感知的功能,解决计算机视觉问题。利用模式识别、人工智能方法分析、理解和辨识图像的内容,解决图像认知问题。例如,图像分割文字识别、人体鉴别等问题。

2018-08-16 22:54:17 Eastmount 阅读数 9945

该系列文章是讲解Python OpenCV图像处理知识,前期主要讲解图像入门、OpenCV基础用法,中期讲解图像处理的各种算法,包括图像锐化算子、图像增强技术、图像分割等,后期结合深度学习研究图像识别、图像分类应用。希望文章对您有所帮助,如果有不足之处,还请海涵~

该系列在github所有源代码:https://github.com/eastmountyxz/ImageProcessing-Python
PS:请求帮忙点个Star,哈哈,第一次使用Github,以后会分享更多代码,一起加油。

同时推荐作者的C++图像系列知识:
[数字图像处理] 一.MFC详解显示BMP格式图片
[数字图像处理] 二.MFC单文档分割窗口显示图片
[数字图像处理] 三.MFC实现图像灰度、采样和量化功能详解
[数字图像处理] 四.MFC对话框绘制灰度直方图
[数字图像处理] 五.MFC图像点运算之灰度线性变化、灰度非线性变化、阈值化和均衡化处理详解
[数字图像处理] 六.MFC空间几何变换之图像平移、镜像、旋转、缩放详解
[数字图像处理] 七.MFC图像增强之图像普通平滑、高斯平滑、Laplacian、Sobel、Prewitt锐化详解

本篇文章作为第一篇,将讲解图像处理基础知识和OpenCV入门函数,知识点如下:
1.图像基础知识
2.OpenCV读写图像
3.OpenCV像素处理

PS: 文章也学习了网易云高登教育的知识,推荐大家学习。

PSS:2019年1~2月作者参加了CSDN2018年博客评选,希望您能投出宝贵的一票。我是59号,Eastmount,杨秀璋。投票地址:https://bss.csdn.net/m/topic/blog_star2018/index

五年来写了314篇博客,12个专栏,是真的热爱分享,热爱CSDN这个平台,也想帮助更多的人,专栏包括Python、数据挖掘、网络爬虫、图像处理、C#、Android等。现在也当了两年老师,更是觉得有义务教好每一个学生,让贵州学子好好写点代码,学点技术,"师者,传到授业解惑也",提前祝大家新年快乐。2019我们携手共进,为爱而生。

一.图像基础知识

图像都是由像素(pixel)构成的,即图像中的小方格,这些小方格都有一个明确的位置和被分配的色彩数值,而这些一小方格的颜色和位置就决定该图像所呈现出来的样子。像素是图像中的最小单位,每一个点阵图像包含了一定量的像素,这些像素决定图像在屏幕上所呈现的大小。

图像通常包括二值图像、灰度图像和彩色图像。

1.二值图像
二值图像中任何一个点非黑即白,要么为白色(像素为255),要么为黑色(像素为0)。将灰度图像转换为二值图像的过程,常通过依次遍历判断实现,如果像素>=127则设置为255,否则设置为0。

2.灰度图像
灰度图像除了黑和白,还有灰色,它把灰度划分为256个不同的颜色,图像看着也更为清晰。将彩色图像转换为灰度图是图像处理的最基本预处理操作,通常包括下面几种方法:
(1) 浮点算法:Gray=R0.3+G0.59+B0.11
(2) 整数方法:Gray=(R
30+G59+B11)/100
(3) 移位方法:Gray=(R28+G151+B77)>>8;
(4) 平均值法:Gray=(R+G+B)/3;(此程序采用算法)
(5) 仅取绿色:Gray=G;
(6) 加权平均值算法:根据光的亮度特性,公式: R=G=B=R
0.299+G*0.587+B0.144

通过上述任一种方法求得Gray后,将原来的RGB(R,G,B)中的R,G,B统一用Gray替换,形成新的颜色RGB(Gray,Gray,Gray),用它替换原来的RGB(R,G,B)就是灰度图了。改变象素矩阵的RGB值,来达到彩色图转变为灰度图。

3.彩色图像
彩色图像是RGB图像,RGB表示红、绿、蓝三原色,计算机里所有颜色都是三原色不同比例组成的,即三色通道。



二.OpenCV读写图像

本文主要使用Python2.7和OpenCV进行讲解,首先调用"pip install opencv-python"安装OpenCV库,如下图所示:

1.读入图像
OpenCV读图像主要调用下面函数实现:

img = cv2.imread(文件名,[,参数])
参数(1) cv2.IMREAD_UNCHANGED (图像不可变)
参数(2) cv2.IMREAD_GRAYSCALE (灰度图像)
参数(3) cv2.IMREAD_COLOR (读入彩色图像)
参数(4) cv2.COLOR_BGR2RGB (图像通道BGR转成RGB)

2.显示图像
显示图像调用函数如下:

cv2.imshow(窗口名, 图像名)

3.窗口等待
调用函数如下:

cv2.waitKey(delay)
键盘绑定函数,共一个参数,表示等待毫秒数,将等待特定的几毫秒,看键盘是否有输入,返回值为ASCII值。如果其参数为0,则表示无限期的等待键盘输入;参数>0表示等待delay毫秒;参数<0表示等待键盘单击。

4.删除所有窗口
调用函数如下:

cv2.destroyAllWindows() 删除所有窗口
cv2.destroyWindows() 删除指定的窗口

5.写入图片
调用函数如下:

retval = cv2.imwrite(文件地址, 文件名)

下面代码是读入图片并显示保存。

# -*- coding:utf-8 -*-
import cv2

#读取图片
img = cv2.imread("test.jpg")

#显示图像
cv2.imshow("Demo", img)

#等待显示
cv2.waitKey(0)
cv2.destroyAllWindows()

#写入图像
cv2.imwrite("testyxz.jpg", img)

输出结果如下图所示,并且在文件夹下保存了一张名为“testyxz.jpg”的图像。

如果代码中没有watiKey(0)函数,则运行结果如下图所示:

同时
可以对代码进行升级,如下所示:

#无限期等待输入
k=cv2.waitKey(0)
#如果输入ESC退出
if k==27:
    cv2.destroyAllWindows()


三.OpenCV像素处理

1.读取像素
灰度图像直接返回灰度值,彩色图像则返回B、G、R三个分量。注意OpenCV读取图像是BGR存储显示,需要转换为RGB再进行图像处理。

灰度图像:返回值 = 图像(位置参数)
eg: test=img[88,42]
彩色图像:返回值 = 图像[位置元素, 0 | 1 | 2 ] 获取BGR三个通道像素
eg: blue=img[88,142,0] green=img[88,142,1] red=img[88,142,2]

2.修改图像
修改图像如果是灰度图像则直接赋值新像素即可,彩色图像依次给三个值赋值即可。

灰度图像:
img[88,142] = 255
彩色图像:
img[88,142, 0] = 255
img[88,142, 1] = 255
img[88,142, 2] = 255
彩色图像:方法二
img[88,142] = [255, 255, 255]

下面代码是获取像素及修改的操作。

# -*- coding:utf-8 -*-
import cv2

#读取图片
img = cv2.imread("test.jpg", cv2.IMREAD_UNCHANGED)
test = img[88,142]
print test
img[88,142] = [255, 255, 255]
print test

#分别获取BGR通道像素
blue = img[88,142,0]
print blue
green = img[88,142,1]
print green
red = img[88,142,2]
print red

#显示图像
cv2.imshow("Demo", img)

#等待显示
cv2.waitKey(0)
cv2.destroyAllWindows()

#写入图像
cv2.imwrite("testyxz.jpg", img)

输出结果如下所示:
[158 107 64]
[255 255 255]
255
255
255

下面代码是将行为100到200、列150到250的像素区域设置为白色。

# -*- coding:utf-8 -*-
import cv2

#读取图片
img = cv2.imread("test.jpg", cv2.IMREAD_UNCHANGED)

#该区域设置为白色
img[100:200, 150:250] = [255,255,255]

#显示图像
cv2.imshow("Demo", img)

#等待显示
cv2.waitKey(0)
cv2.destroyAllWindows()

#写入图像
cv2.imwrite("testyxz.jpg", img)

运行结果如下图所示:

希望文章对大家有所帮助,如果有错误或不足之处,还请海涵。
(By:Eastmount 2018-08-16 夜11点 https://blog.csdn.net/Eastmount/

2019-05-28 21:58:23 weixin_43559676 阅读数 51

数字图像处理基础知识

随计算机技术的发展,20世纪50年代,人们应用计算机处理一些图形和图像信息,这是最早的图像处理;20世纪60年代,人们应用计算机改善图像的质量,这时形成了数字图像处理这门学科。本章主要介绍数字图像处理的基础内容,包括什么是数字图像基础、图像的表示方法、图像的数据结构以及计算机中图像文件格式。

一 数字图像处理简介
数字图像处理(Digital Image Processing)是一种将图像信号数字化后利用计算进行处理的技术。随着计算机科学的发展,数字图像处理已经广泛的应用到各领域之中。
图像的概念
图像就是将三维世界中的事物投影到二维平面上,变为一张图片的形式。图像中包含了它所表达的事物的大部分信息,据有关资料表示,人类所获得的大部分信息来源于眼睛,也就是从图像中获得的。
数字图像的分类
数字图像在计算机中表示方法不同,分为二进制图像,索引图像,灰度图像,RGB图像和多帧图像;
数字图像的产生
数字图像的产生主要通过两种方式,一种是通过像数码照相机这样的设备直接拍摄得到数字图像,还有一种是通过图像采集卡、扫描仪等数字化设备,将模拟图像转变为数字图像。
1.1.4数字图像处理的研究内容
1) 图像运算与变换
2) 图像增强
3) 图像复原
4).图像的锐化处理及边缘检测
5) 图像分割
6) 图像编码压缩
图像的表示方法
图像的表示方法是对图像处理算法描述和利用计算机处理图像的基础。一个二维图像,在计算机中通常为一个二维数组f (x, y),或者是一个M×N的二维矩阵(其中,M为图像的行数,N为图像的列数)
1 二进制图像
二进制图像也称为二值图像,通常用一个二维数组来描述,1位表示一个像素,组成图像的像素值非0即1,没有中间值,通常0表示黑色,1表示白色。二进制图像一般用来描述文字或者图形,其优点是占用空间少方便处理,缺点是只能描述边缘轮廓等无法显示其细节。
2 灰度图像
灰度图像也称为单色图像,通常也由一个二维数组表示一副图像,8位表示一个像素,0表示黑色,255表示白色,1~254表示不同的深浅灰色,一副灰度图像放大4×4大小像素,通常灰度图像显示了黑色与白色之间许多级的颜色深度,比人眼所能识别的颜色深度范围要宽的多。
3 RGB图像
RGB图像也称为彩色图像,利用3个大小相同的二维数组表示一个像素,3个数组分别代表R、G、B三个分量,R表示红色,G表示绿色,B表示蓝色,通过三种基本颜色可以合成任意颜色。每个像素中的每种颜色分量占8位,每一位由[0,255]中的任意数值表示,那么一个像素由24位表示,允许的最大值为224(即1677216,通常记为16M)。
4 索引图像
索引图像是一种把像素值直接作为RGB调色板下标的图像。在MATLAB中,索引图像包含一个数据矩阵X和一个颜色映射(调色板)矩阵map。数据矩阵可以是8位无符号整型、16位无符号整型或双精度类型的。
5 多帧图像
多帧图像是一种包含多幅图像或帧的图像文件,又称为多页图像或图像序列,主要用于需要对时间或场景上相关图像集合进行操作的场合。例如,计算机X线断层扫描图像或电影帧等
矩阵
矩阵用于描述图像,可以表示黑白图像、灰度图像和彩色图像。矩阵中的一个元素表示图像的一个像素。矩阵描述黑白图像时,矩阵中的元素取值只有0和1两个值,因此黑白图像又叫二值图像或二进制图像。矩阵描述灰度图像时,矩阵中的元素由一个量化的灰度级描述,灰度级通常为8位,即0~255之间的整数,其中0表示黑色,255表示白色。
二 计算机中图像文件格式
数字图像在计算机中存储的格式有多种多样,每一种文件格式都包括一个头文件和一个数据文件。头文件的内容由制作图像的公司规定,一般包括文件类型、制作时间,文件大小制作人及版本号等信息。文件制作时还涉及到图像的压缩和存储效率等。
BMP文件格式
BMP文件格式是Windows系统中的一种标准图像文件格式,支持 RGB、索引颜色、灰度和位图颜色模式。BMP文件一共有两种类型,设备相关位图(DDB)和设备无关位图(DIB)。Windows3.0以前的BMP文件格式与显示设备有关,因此把这种BMP文件格式称为设备相关位图DDB(device-dependent bitmap)文件格式。Windows 3.0以后的BMP文件与显示设备无关,因此把这种BMP图象文件格式称为设备无关位图DIB(device-independent bitmap)格式。BMP文件默认的文件扩展名是 .BMP或 .bmp。
GIF文件格式
GIF文件格式是CompuServe公司在 1987年开发的图像文件格式,任何商业目的使用均须由CompuServe公司授权。GIF文件主要是为数据流设计的一种传输格式,不作为文件的存储格式,它具有顺序的结构形式。GIF文件主要由五部分组成:文件标志块,识别标识符“GIF”和版本号;逻辑屏幕描述块,定义图像显示区域的参数,包含背景颜色信息、显示区域大小、纵横
尺寸、颜色深浅以及是否存在全局彩色表;全局彩色表,其大小由图像使用的颜色数决定;图像数据块,包含图像的描述块,局部彩色表,压缩图像数据,图像控制扩展块,无格式文本扩展块,注释扩展块,应用程序扩展块,此部分可以缺省;尾块,为三维16进制数,表示数据流已经结束,此部分可以缺省。
JPEG文件格式
JPEG是Joint Photographic Experts Group的缩写,即联合国图像专家组。作为一种图像文件格式,JPEG格式联合国图像专家组制定,文件扩展名 .jpg或 .jpeg。JPEG格式的图像文件具有迄今为止最为复杂的文件结构和编码方式,和其他格式的最大区别是JPEG使用一种有损压缩算法,是以牺牲一部分的图像数据来达到较高的压缩率,但是这种损失很小以至于很难察觉。JPEG格式又可分为标准JPEG、渐进式JPEG及JPEG2000三种格式,这三种格式的区别主要在Internet图像显示方式上。标准JPEG格式图像在网页下载时只能由上而下依序显示图像,直到图像全部下载完毕,才能看到全貌。渐进式JPEG格式可以在网页下载时,先呈现出图像的粗略外观后,再慢慢地呈现出完整的内容。JPEG2000格式是新一代的影像压缩法,压缩品质更好,并可改善无线传输时,常因讯号不稳造成马赛克及位置错乱的情况,改善传输的品质。
TIFF文件格式
TIFF格式最初由Aldus公司与微软公司一起为PostScript打印开发,是一种主要用来存储包括照片和艺术图在内的图像的文件格式,文件扩展名为 .tif 或 .tiff。TIFF文件格式主要包括三个部分:文件头,有固定的位置,位于文件的最前端,是文件中惟一的,包含一个标志参数指出标识信息区在文件中的存储地址及正确解释TIFF文件的其他部分所需的必要信息; 标识信息区,是用于区分一个或多个可变长度数据块的表,包含了有关于图像的所有信息。图像文件目录中提供了一系列的指针,这些指针指向各种有关的数据字段在文件中的初始地址,并给出每个字段的数据类型及长度;图像数据,根据图像文件目录所指向的地址存储相关的图像信息。

没有更多推荐了,返回首页