当前位置:文档之家› 第11章java图像图形处理

第11章java图像图形处理

第11章java图像图形处理
第11章java图像图形处理

第十一章图形图像处理

在前边的章节的图形用户界面的处理中,已经看到了图像的应用。本章将简要介绍如何在用户屏幕上绘制图形以及如何显示图像。

图形

在前边我们已经介绍了用户屏幕和容器的概念,也看到了如何在容器中添加组件。一般来说,在用户屏幕上绘制图形其实就是在容器组件上绘制图形。因此需要注意以下两点:1)组件中的坐标系统

容器组件的坐标系统类似于屏幕的坐标系统,坐标原点(0,0)在容器的左上角,正x 轴方向水平自左向右,正y轴方向垂直自上向下。

在java中,不同的图形输出设备拥有自己的设备坐标系统,该系统具有与默认用户坐标系统相同的方向。坐标单位取决于设备,比如,显示的分辨率不同,设备坐标系统就不同。一般来说,在显示屏幕上的计量单位是像素(每英寸大约90个像素),在打印机上是点(每英寸大约600个点)。Java系统自动将用户坐标转换成输出设备专有的设备坐标系统。

2)图形环境(graphics context)

由于在组件上绘制图形使用的用户坐标系统被封装在Graphics2D类的对象中,所以Graphics2D被称之为图形环境。它提供了丰富的绘图方法,包括绘制直线、矩形、圆、多边形等。

下边我们先介绍与绘制图形相关的类,再介绍绘制图形的方法和步骤。

11.1.1 绘制图形的类

与绘制图形有关的类的层次结构如下:

|-

|

|-

|-

Graphics 类是所有图形类的抽象基类,它允许应用程序可以在组件(已经在各种设备上实现)上进行图形图像的绘制。Graphics 对象封装了 Java 支持的基本绘制操作所需的状态信息,其中包括组件对象、绘制和剪贴坐标的转换原点、当前剪贴区、当前颜色、当前字体、当前的逻辑像素操作方法(XOR 或 Paint)等等。

Graphics2D类是从早期版本()中定义设备环境的Graphics类派生而来的,它提供了对几何形状、坐标转换、颜色管理和文本布局更为复杂的控制。它是用于在Java(tm)平台上绘制二维图形、文本和图像的基础类。

GraphicsDevice类定义了屏幕和打印机这类可用于绘制图形的设备。

GraphicsEnvironment类定义了所有可使用的图形设备和字体设备。

GraphicsConfiguration类定义了屏幕或打印机这类设备的特征。在图形绘制过程中,每个 Graphics2D 对象都与一个定义了绘制位置的目标相关联。GraphicsConfiguration 对象定义绘制目标的特征(如像素格式和分辨率等)。在Graphics2D对象的整个生命周期中都使用相同的绘制标准。

Griphics和Graphics2D类都是抽象类,我们无法直接创建这两个类的对象,表示图形环境的对象完全取决于与之相关的组件,因此获得图形环境总是与特定的组件相关。

创建Graphics2D 对象时,GraphicsConfiguration 将为Graphics2D 的目标(Component 或 Image)指定默认转换,所有 Graphics2D 方法都采用用户空间坐标。

一般来说,图形的绘制过程分为四个阶段:确定绘制内容、在指定的区域绘制、确定绘制的颜色、将颜色应用于绘图面。有三种绘制操作:几何图形、文本和图像。

绘制过程中,Graphics2D对象的6个重要属性如下:

Paint 颜料属性决定线条绘制的颜色。它也定义填充图形的颜色和模式,系统默认的颜料属性是组件的颜色。

Font 字体属性定义了绘制文本时所使用的字体,系统默认的字体是组件的字体设置。

Stroke 画笔属性确定线型,如实线、虚线或点划线等。该属性也决定线段端点的形状。系统默认的画笔是方形画笔,绘制线宽为1的实线,线的末端为方形,斜角线段接口为45度斜面。

Transform 转换属性定义渲染过程中应用的转换方法。可以使绘制的图形平移、旋转和

缩放。

Composite 合成属性决定如何在组件上绘制叠放图形。

Clip 剪切属性定义了组件上的一个区域边界。图形绘制只能在该区域内进行。

一般情况下,我们使用Griphics2D对象的方法进行图形的绘制工作,Griphics2D对象的常用方法如下:

1) abstract void clip(Shape s) 将当前Clip与指定Shape的内部区域相交,并将Clip设置为所得的交集。

2) abstract void draw(Shape s) 使用当前Graphics2D上下文的设置勾画Shape 的轮廓。

3) abstract void drawImage(BufferedImage img, BufferedImageOp op, int x, int y) 呈现使用 BufferedImageOp 过滤的 BufferedImage 应用的呈现属性包括 Clip、Transform 和 Composite 属性。

4) abstract boolean drawImage(Image img, AffineTransform xform, ImageObserver obs) 呈现一个图像,在绘制前进行从图像空间到用户空间的转换。

5) abstract void drawString(String s,float x,float y)使用 Graphics2D 上下文中当前文本属性状态呈现由指定 String 指定的文本。

6) abstract void drawString(String str, int x, int y) 使用Graphics2D 上下文中的当前文本属性状态呈现指定的 String 的文本。

7) abstract void fill(Shape s)使用Graphics2D上下文的设置,填充Shape 的内部区域。

8) abstract Color getBackground()返回用于清除区域的背景色。

9) abstract Composite getComposite()返回Graphics2D 上下文中的当前Composite

10) abstract Paint getPaint()返回 Graphics2D 上下文中的当前 Paint

11) abstract Stroke getStroke()返回 Graphics2D 上下文中的当前Stroke

12) abstract boolean hit(Rectangle rect, Shape s,

boolean onStroke)检查指定的 Shape 是否与设备空间中的指定 Rectangle 相交。

13) abstract void rotate(double theta)将当前的 Graphics2D Transform 与旋转转换连接。

14) abstract void rotate(double theta, double x, double y)将当前的 Graphics2D Transform 与平移后的旋转转换连接。

15) abstract void scale(double sx, double sy)将当前Graphics2D Transform与可缩放转换连接。

16) abstract void setBackground(Color color)设置Graphics2D上下文的背景色。

17) abstract void setComposite(Composite comp)为 Graphics2D上下文设置Composite Composite 用于所有绘制方法中,如 drawImage、drawString、draw 和 fill 它指定新的像素如何在呈现过程中与图形设备上的现有像素组合。

18) abstract void setPaint(Paint paint)为 Graphics2D 上下文设置Paint 属性。

19) abstract void setStroke(Stroke s) 为 Graphics2D 上下文设置Stroke

20) abstract void setTransform(AffineTransform Tx)重写Graphics2D上下文中的 Transform。

21) abstract void shear(double shx, double shy)将当前Graphics2D Transform与剪裁转换连接。

22) abstract void translate(double tx, double ty)将当前的Graphics2D Transform与平移转换连接。

23) abstract void translate(int x, int y)将Graphics2D上下文的原点平移到当前坐标系统中的点 (x, y)。

11.1.2 简单几何图形类的层次结构

在包中定义了几何图形类,包括点、直线、矩形、圆、椭圆、多边形等等。该包中各类的层次结构如下:

|-

|-

|-

|-

|-

|-

|-

|-

|-

|-

|-

|-

|- |-

|-

|-

|-

|-

|-

|-

|-

|-

|-

|-

下边我们简要介绍一下绘制几何图形类的功能及应用。

11.1.3 路径类

路径类用于构造直线、二次曲线和三次曲线的几何路径。它可以包含多个子路径。如上类层次结构所描述,Path2D是基类(它是一个抽象类);和是其子类,它们分别以不同

的精度的坐标定义几何路径;GeneralPath在及其以前的版本中,它是一个独立的最终类。在版本中进行了调整与划分,其功能由Path2D替代,为了其兼容性,把它划为派生的最终类。下边以GeneralPath类为例介绍一下路径类的功能与应用。

1.构造方法

构造路径对象的方法如下:

1) GeneralPath(int rule) 以rule指定缠绕规则构建对象。缠绕规则确定路径内部的方式。有两种方式的缠绕规则:用于确定路径内部的奇偶 (even-odd) 缠绕规则;用于确定路径内部的非零 (non-zero) 缠绕规则。

2) GeneralPath() 以默认的缠绕规则构建对象。

3)GeneralPath(int rule, int initialCapacity) 以rule指定缠绕规则和initialCapacity指定的容量(以存储路径坐标)构建对象。

4) GeneralPath(Shape s) 以Shape对象s构建对象。

2. 常用方法

路径对象常用的方法如下:

1) void append(Shape s, boolean connect) 将指定Shape对象的几何形状追加到路径中,也许使用一条线段将新几何形状连接到现有的路径段。如果connect为true 并且路径非空,则被追加的Shape几何形状的初始moveTo操作将被转换为lineTo操作。

2) void closePath() 回到初始点使之形成闭合的路径。

3) boolean contains(double x, double y) 测试指定坐标是否在当前绘制边界内。

4) void curveTo(float x1, float y1, float x2, float y2, float x3, float y3) 将三个新点定义的曲线段添加到路径中。

5) Rectangle2D getBounds2D() 获得路径的边界框。

6) Point2D getCurrentPoint() 获得当前添加到路径的坐标。

7) int getWindingRule() 获得缠绕规则。

8) void lineTo(float x, float y) 绘制一条从当前坐标到(x,y)指定坐标的直线,将(x,y)坐标添加到路径中。

图 折线图

9) void moveTo (float x, float y) 从当前坐标位置移动到(x ,y )指定位置,将(x ,y )添加到路径中。

10) void

quadTo (float x1, float y1, float x2, float y2) 将两个

新点定义的曲线段添加到路径中。

11) void reset () 将路径重置为空。

12) void setWindingRule (int rule) 设置缠绕规则。

13) void

transform(AffineTransform at) 使用指定的AffineTransform 变

换此路径的几何形状。

以上只是列出了一些常用的方法,若需要了解更多的信息,请参阅JDK 文档。 3. 应用举例

如前所述,我们不能直接创建Graphics 和Graphics2D 绘图对象,要在组件上绘图,需要使用组件的方法先获得绘图环境对象的引用。

一般情况下,我们采用重写paint()方法的方式实现绘图,该方法在组件重建的时候被调用。当然我们也可以使用组件的getGriphics()方法获得绘图对象。

例 在屏幕上画出如图的折线图。 程序的基本设计思想如下:建立JFrame 的派生类,重写paint()方法,在该方法中实现折线图的绘制。程序参考代码如下:

/* 绘制折线程序 */ import .*; import .*;

public class DrawLine extends JFrame {

public DrawLine() {

super("Drawing 2D Paint"); setSize(425,160); setVisible(true);

setDefaultCloseOperation(EXIT_ON_CLOSE);

}

public void paint(Graphics g) 11.1.4点

在java中有3个定义点的类:、和Point。前两个是Point2D的静态内部类,它们使用浮点型数计算点的坐标;最后一个是Point2D的子类,它使用整型数计算点的坐标。Point2D 是一个抽象类,虽然不能直接创建对象进行操作,但我们可以使用其内部类或子类对象进行操作。我们可以使用如下的构造方法创建对象:

1)() 创建具有坐标(0,0)的点对象。

2)(float x, float y) 创建具有坐标(x ,y )的点对象。

3)() 创建具有坐标(0,0)的点对象。

4)(double x,double y) 创建具有坐标(x ,y )的点对象。

两种不同类型的构造方法构造不同精度的坐标点。

下边的两个语句分别构造两个不同的坐标点:

p1 = new (); 线段

在java中提供了处理线段的类、和Line2D。其中Line2D类是所有存储2D线段对象的惟一抽象超类;、是其子类,分别用于float型和double型用户坐标的定义。我们可以使用如下的构造方法创建对象:

1) () 创建一个从坐标 (0, 0) 到(0, 0)的对象。

2)(float X1, float Y1, float X2, float Y2) 根据指定坐标(X1,Y1)和(X2,Y2)构造对象。

3)(Point2D p1, Point2D p2) 根据p1和p2指定的两点构造对象。

4)() 创建一个从坐标 (0, 0) 到(0, 0)的对象。

5)(double X1, double Y1, double X2, double Y2) 根据指定坐标(X1,Y1)和(X2,Y2)构造对象。

6) Line2D. Double(Point2D p1, Point2D p2) 根据p1和p2指定的两点构造对象。

例如,下列语句:

p1 = new ();

p2 = new (100,100); line1 = new (p1,p2); line2 = new (0,0,100,100);

将构建两条(line1和line2)相同的从用户坐标(0,0)到(100,100)的线段。 线段类也提供一些获取线段的相关信息(如坐标值)、计算点到直线之间的距离、测试线段(是否在指定的边界内、是否与另一条线段相交等)、设置线段等方法。这些方法不再列出,使用时再作简要介绍。读者需要了解更多的信息时,可参阅JDK 相关的文档。

3. 应用举例

在前边的示例中,我们已经看到了绘制折线的方法和步骤。有多种绘制线段的方法。当绘制多个连续的线段(如上例的折线),一般来说,会采用路径的方式,先将各坐标点存入路径中,然后再进行绘制。当绘制单个简单的线段时,会采用Graphics 对象的drawLine()方法,需要指定直线的起点和终点坐标。方法的格式如下:

void drawLine(int X1,int Y1,int X2,int

Y2)

当定位坐标要求精度较高时,采用浮点数坐标,使用Graphics2D 对象绘制图形。

下边我们举例说明其应用。 例 在屏幕上绘制如图的图形。

程序的基本设计思想如下:建立JFrame 的派生类,重写paint()方法,在该方法中实现线段的绘制。程序参考代码如下:

/* 程序名*/ import .*; import .*;

import class DrawLineDemo extends JFrame {

public DrawLineDemo() {

super("Drawing Line");

图 绘制直角矩形

setSize(400,300); setVisible(true);

setDefaultCloseOperation(EXIT_ON_CLOSE); }

public void paint(Graphics g) { (g); (0,

0,

50,

100);

100f100f125f50f125f50f150f100f150f100f125f150f125f150f100f100f 11.1.5直角矩形

与点、线段类的定义相似,也有三个类定义直角矩形:Rectangle2D 、和。我们可以使用下边的构造方法创建直角矩形。

1) ()

2) (float x, float y, float w, float h) 3) ()

4) (double x , double y, double w, double h)

其中,没有参数的构造方法将构造一个左上角的坐标为(0,0),高度和宽度为0的矩形。参数x, y 指定矩形的左上角坐标,w 指定矩形的宽度,h 指定矩形的高度。

直角矩形类也提供了相关的方法,不再一一列出,用到时再作介绍,下边举一个例子说明直角矩形的绘制。

例 绘制如图的5个直角矩形。

程序的基本设计思想如下:建立JFrame 的派生类,重写paint()方法,在该方法中实现直角矩形的绘制。先定义第一个矩形,然后在此矩形的基础上,使用setRect()方法改变对象的位置。setRect()方法说明如下:

void setRect (float x, float y, float w, float h) 四个参数与对象构造方法中所说明的相一致。 程序参考代码如下:

import .*;

import .*;

import class DrawRectangleDemo extends JFrame

{

public DrawRectangleDemo()

{

super("Drawing Rectangle");

setSize(400,300);

setVisible(true);

setDefaultCloseOperation(EXIT_ON_CLOSE);

}

public void paint(Graphics g)

{

(g);

Graphics2D g2d=(Graphics2D)g;

float x=50f,y=50f; 50f50fdraw(rectangle1); 10f10f50f50f圆角矩形

定义圆角矩形相关的类是RoundRectangle2D、和。其层次结构与上述介绍的类相似。可用的对象构造方法如下:

1)( )

2)(double x,double y,double w,double h,double arcw, double

arch)

3)( )

4)(double x,double y,double w,double h,double arcw, double

arch)

和直角矩形不同的是增加了两个参数arcw和arch,圆角弧的宽度和高度。

与绘制直角矩形相同,也可以多种方式绘制,除了采用了先定义圆角矩形对象,再使用Graphics2D对象的draw()方法绘制外,也可以直接使用图形对象的如下方法绘制圆角矩形:

1) void drawRoundRect(int x,int y,int w, int h,int arcW,int arcH)

2) void fillRoundRect(int x,int y,int w,int h,int arcW, int arcH)

下边举一个例子,说明矩形的几种绘制方法。

例分别以两种方法绘制直角和圆角矩形。

程序代码如下:

/* 程序名 */

import .*;

import .*;

import class DrawRectangleSummary extends JFrame

{

public DrawRectangleSummary()

{

super("Drawing Rectangle");

setSize(400,300);

setVisible(true);

setDefaultCloseOperation(EXIT_ON_CLOSE);

}

public void paint(Graphics g)

{

(g);

Graphics2D g2d=(Graphics2D)g;

float x=10f,y=50f;

r1= new

图(x,y,50f,50f);50f50f10f10f70f50f50f70f50f50f10f10f11.1.6;

import .*;

import class DrawEllipseDemo extends JFrame

{

图 圆和椭圆

图 弧形

public DrawEllipseDemo() {

super("Drawing Rectangle"); setSize(400,300); setVisible(true);

setDefaultCloseOperation(EXIT_ON_CLOSE); }

public void paint(Graphics g) { (g);

Graphics2D g2d=(Graphics2D)g; float x=10f,y=50f;

r1= new (x,y,100f,100f);100f100f 11.1.7; import .*;

import class DrawArcs extends JFrame {

public DrawArcs() {

super("Drawing Rectangle"); setSize(400,300); setVisible(true);

setDefaultCloseOperation(EXIT_ON_CLOSE); }

public void paint(Graphics g) { (g);

Graphics2D g2d=(Graphics2D)g; float x=0f,y=50f;

arc1= new (x,y,100f,100f,45f,90f,0);45f90f45f90f; import .*;

import class Robot extends JFrame {

public Robot() {

super("Drawing Robot");

setSize(400,300);

setVisible(true);

setDefaultCloseOperation(EXIT_ON_CLOSE);

}

public void paint(Graphics g)

{

(g);

Graphics2D g2d=(Graphics2D)g;

float x=50f,y=50f;

head=new (x,y,50f,50f, 20f, 20f);

(head); 20f20f45f90f20f20f45f90f18f10f18f10f8f8f8f8f20f40f225f90f30f5f11.1.8二次曲线

定义二次曲线相关的类是:QuadCurve2D、和。可以使用如下的构造方法创建对象:

1) ()

2) (float x1, float y1, float ctrlx, float ctrly, float x2, float y2)

3) ()

4) (double x1, double y1, double ctrlx, double ctrly, double x2, double y2)

其中:x1,y1为曲线的起点坐标;x2,y2为曲线终点的坐标;ctrlx,ctrly为曲线控制点的坐标。曲线是由其终点和定义每个终点处切线的控制点确定。

下边举一个简单的例子说明二次曲线的绘制方法。

例在例绘制折线的基础上,取其中绘制折线的六对坐标点,绘制两条二次曲线。如图所示。

程序的主要意图是,先绘制出折线,然后分别取折线的3

对坐标点绘制两条曲线,有了这3个点的位置,我们就可以清

晰地看到控制点对曲线的影响。

图二次曲线程序的参考代码如下:

/* 程序名 */

图 三次曲线

import .*; import .*;

public class QuadCurveDemo extends JFrame {

public QuadCurveDemo() {

super("Drawing QuadCurve"); setSize(425,160); setVisible(true);

setDefaultCloseOperation(EXIT_ON_CLOSE); }

public void paint(Graphics g) { (g);

Graphics2D g2d = (Graphics2D)g; 三次曲线

定义三次曲线相关的类是:CubicCurve2D,和CubicCurve 。可以使用如下的构造方法创建对象:

1) ()

2) (float x1, float y1, float ctrlx1, float ctrly1, float ctrlx2, float ctrly2, float x2, float y2)

3) ()

4) (double x1, double y1, double ctrlx1, double ctrly1, , double ctrlx2, double ctrly2, double x2, double y2)

和二次曲线类似,x1,y1为曲线的起点坐标;x2,y2为曲线终点的坐标;ctrlx1,ctrly1 ctrlx2,ctrly2为曲线控制点的坐标。三次曲线有两个控制点,分别对应起点和终点。

下边仍然使用上边绘制折线的坐标数据绘制两条三次曲线,简单说明三次曲线的绘制方法。

例在例绘制折线的基础上,取绘制折线的七对坐标点,绘制两条三次曲线。如图所示。 为了便于比较,仍然先绘制出折线,然后分别取折线的4对坐标点绘制两条曲线,有了

这4个点的位置和折线,我们就可以分析一下,曲线两端点与两个控制点连接的折线就是曲线两端点处的切线。因此可以清晰地看到控制点对曲线的影响。程序的参考代码如下:/* 程序名 */

import .*;

import .*;

public class CubicCurveDemo extends JFrame

{

public CubicCurveDemo()

{

super("Drawing CubicCurve");

setSize(425,160);

setVisible(true);

setDefaultCloseOperation(EXIT_ON_CLOSE);

}

public void paint(Graphics g)

{

(g);

Graphics2D g2d = (Graphics2D)g; 2 绘制图形的颜色及其他在上一节我们简要介绍了几何图形的绘制,本节主要讨论图形的颜色及绘制模式。11.2.1 颜色类(Color)

Java中颜色的设置采用与设备无关的方式,允许用户指定任何需要的颜色,类定义了一系列常量用以指定常用的颜色,也可以通过Color类的构造方法生成所需要的颜色对象。

1. 常用的构造方法

我们可以使用如下的构造方法构造颜色对象:

1) Color(int red,int green,int blue) 使用红、绿、蓝三个整数表示混合后的颜色,red,grenn,blue取值范围在0~255之间。如new Color(255,100,100)可表示亮红色。

2) Color(int rgbValue) 采用红、绿、蓝构成的一个整数来表示颜色。一般常写成

16进制形式。如0xffffff表示白色(最亮)。

3) Color(float red,float green,float blue) 使用三浮点数指定红、绿、蓝三个分量表示颜色。取值范围在~之间。

2.类常量

Color类提供了一些常量来指定颜色,下表列出了类常量及所表示的颜色。

表颜色的类常量表

3. 常用方法

1) public int getRed() 返回颜色中包含红的成份。

2) public int getGreen() 返回颜色中包含绿的成份。

3) public int getBlue() 返回颜色中包含蓝的成份。

4) public static int HSBtoRGB(float hue,float saturation,float brightness) 返回RGB值。

5) public static float[] RGBtoHSB(int red,int green,int blue,float values[]) 返回一个与RGB值相应的HSB值的浮点数组。若values不为空(null),即values[0]表示

色相、values[1]表示饱和度、values[2]表示亮度。

注意:HSB(hue-saturation-brightness)是另一种指定颜色的方式,色相(hue)大约有红色、橙色、黄色、绿色、蓝色、靛青、紫色等;饱和度(staturation)代表了相应的色相的深浅或鲜艳程度;亮度(brightness)表示明暗。它们都是介于~之间。

下边我们看一个示例。

例使用applet 绘制如图11-10所示奥运五环。

图11-10 例运行屏幕

程序参考代码如下:

/*这是一个设置绘图颜色的示例程序

*程序的名称是:

*/

import .*;

import .*;

public class ColorExam11_10 extends JApplet

{

public void paint(Graphics g)

{

;

(10,10,250,150); 11.2.2中的JColorChooser类来实现调色板的功能。JColorChooser 提供一个用于允许用户操作和选择颜色的控制器窗格。下边简要介绍一下JColorChooser 类的功能。

1.构造方法

构建对象的方法如下:

1)JColorChooser()创建初始颜色为白色的颜色选取器窗格。

2)JColorChooser(Color initialColor) 创建具有指定初始颜色的颜色选取器窗格。

3)JColorChooser(ColorSelectionModel model)创建具有指定ColorSelectionModel 颜色选取器窗格。

2.类常量

1)CHOOSER_PANELS_PROPERTY 其值为"chooserPanels",表示选择器窗格属性名。

2)PREVIEW_PANEL_PROPERTY 其值为"previewPanel",表示预览窗格属性名。

3)SELECTION_MODEL_PROPERTY 其值为"selectionModel",表示选择模型属性名。

3.常用方法

1)public Color getColor()获取颜色选取器的当前颜色值。

2) public void setColor(int r,int g,int b) 将颜色选取器的当前颜色设置为指定的 RGB 颜色。

3) public static Color showDiaglog(Component component,String title,Color initColor)显示颜色选取器窗格并返回选取的颜色。其中参数component表示该对话窗格所依赖的组件,title设置窗格标题,initColor设置初置的颜色。

showDialog()方法是一个类方法,在程序可以使用它来创建一个颜色对话框,选取所需要的颜色。

下边我们举一个例子说明调色板的应用。

例设计如图11-11的用户屏幕,在界面上安排一个容器组件显示信息;安排一个按钮,当单击此按钮时弹出调色板对话框,选中所需颜色后,即以该颜色作为显示容器的背景色。

图11-11 例运行界面

程序参考代码如下:

/*这是一个使用调色板选取绘图颜色的示例程序

*程序的名称是:

*/

import .*;

import .*;

class ColorExam11_11 extends JFrame implements ActionListener {

JButton bt1=new JButton("改变颜色");

JPanel p1=new JPanel();

public ColorExam11_11()

{

Container pane=();

(new FlowLayout());

(p1);

(bt1);

(new JLabel("这是一个改变对象背景的示例!"));

(this);

setSize(200,200);

setVisible(true);

setTitle("演示颜色对话框");

setDefaultCloseOperation(3);

}

public static void main(String args[])

{

new ColorExam11_11();

}

public void actionPerformed(ActionEvent e)

{

Color c=(null,"调色板",());

(c);

}

}

请大家运行上述程序,看一下调色板的应用。

南京邮电大学数字图像处理与图像通信复习资料

2016年上学期《数字图像处理与图像通信》资料 ===================================================== 一、选择题(共20题) 1、采用幂次变换进行灰度变换时,当幂次取大于1时,该变换是针对如下哪一类图像进行增 强。( B) A 图像整体偏暗 B 图像整体偏亮 C图像细节淹没在暗背景中 D图像同时存在过亮和过暗背景 2、图像灰度方差说明了图像哪一个属性。( B ) A 平均灰度 B 图像对比度 C 图像整体亮度 D图像细节 3、计算机显示器主要采用哪一种彩色模型( A ) A、RGB B、CMY或CMYK C、HSI D、HSV 4、采用模板[-1 1]T主要检测( A )方向的边缘。 A.水平 B.45? C.垂直 D.135? 5、下列算法中属于图象锐化处理的是:( C ) A.低通滤波 B.加权平均法 C.高通滤波 D. 中值滤波 6、维纳滤波器通常用于( C ) A、去噪 B、减小图像动态范围 C、复原图像 D、平滑图像 7、彩色图像增强时, C 处理可以采用RGB彩色模型。 A. 直方图均衡化 B. 同态滤波 C. 加权均值滤波 D. 中值滤波 8、__B__滤波器在对图像复原过程中需要计算噪声功率谱和图像功率谱。 A. 逆滤波 B. 维纳滤波 C. 约束最小二乘滤波 D. 同态滤波 9、高通滤波后的图像通常较暗,为改善这种情况,将高通滤波器的转移函数加上一常数量以 便引入一些低频分量。这样的滤波器叫 B。 A. 巴特沃斯高通滤波器 B. 高频提升滤波器 C. 高频加强滤波器 D. 理想高通滤波器 10、图象与灰度直方图间的对应关系是 B __ A.一一对应 B.多对一 C.一对多 D.都不 11、下列算法中属于图象锐化处理的是: C A.低通滤波 B.加权平均法 C.高通滤 D. 中值滤波 12、一幅256*256的图像,若灰度级数为16,则存储它所需的比特数是:( A ) A、256K B、512K C、1M C、2M 13、噪声有以下某一种特性( D ) A、只含有高频分量 B、其频率总覆盖整个频谱 C、等宽的频率间隔内有相同的能量 D、总有一定的随机性 14. 利用直方图取单阈值方法进行图像分割时:(B) a.图像中应仅有一个目标 b.图像直方图应有两个峰 c.图像中目标和背景应一样大 d. 图像中目标灰度应比背景大 15. 在单变量变换增强中,最容易让人感到图像内容发生变化的是( C )

彩色图像处理

1种颜色 颜色定义:颜色是对象的一种属性,它取决于三个因素。 (1)光源-照射光的光谱特性或光谱能量分布 (2)物体-被照射物体的反射特性 (3)成像接收器(眼睛或成像传感器)-光谱能量吸收特性 2色模型 颜色模型,也称为颜色空间或颜色系统,是用于精确校准和生成各种颜色的一组规则和定义。其目的是在某些标准下以通常可接受的方式简化颜色规格。可以通过坐标系描述颜色模型,并且系统中的每种颜色都可以由坐标空间中的单个点表示。 RGB模型:此模型是行业中的颜色标准。通过更改红色和绿色蓝色三种颜色的亮度及其叠加,可以获得各种颜色。该标准几乎涵盖了人类视觉可以感知的所有颜色,并且是目前使用最广泛的颜色模型之一。

CMY模型:颜色合成方法由绿色,品红色和黄色三种基本原色组成。因为彩色显示不是直接来自光的颜色,而是光被对象吸收并被产生的残留光反射,所以CMY模型也称为减法混合模型。 CMYK模型:将黑色添加到CMY模型。 RGB和CMY之间的转换:在MATLAB中,可以通过imcompliance()函数轻松实现RGB和CMY之间的转换 cmy = imcomplement(rgb); rgb = imcomplement(cmy); HSI模型:HSI模型基于人类视觉系统,并通过使用色相,饱和度和强度三个元素直接描述颜色 @亮度是指人们感到光亮的阴影。光的能量越大,亮度越大。 @Hue是颜色的最重要属性,它决定颜色的本质,颜色的本质由反射光的主波长确定。不同的波长产生不同的色彩感觉。

@饱和度是指颜色的深度和强度,饱和度越高,颜色越深。饱和深度与白色的比率有关,白色比率越大,饱和度越低。 从RGB到HSI的颜色转换及其实现 数字; 子图(1,2,1); rgb = imread('plane.bmp)。 imshow(rgb); title('rgb'); 子图(1,2,2); hsi = rgb2hsi(rgb); imshow(hsi); title('hsi'); 从HSI到RGB的颜色转换及其实现 数字 子图(1,2,1);

基于Java的图形图像处理软件的设计与实现

目录 引言 (4) 第一章绪论 (5) 1.1.1 计算机图形图像学的发展简史 (5) 1.1.2现有图形图像处理软件 (5) 1.2课题研究的目的及意义 (6) 第二章图形图像处理软件开发技术基础 (7) 2.1 Java Swing 简介 (7) 2.1.1 Swing的特性 (7) 2.1.2 Swing程序包和类 (8) 2.2 MVC体系结构 (9) 2.2.1 模型 (9) 2.2.2 视图 (9) 2.2.3 控制器 (10) 第三章图形图像软件的设计 (11) 3.1图形处理模块的设计 (11) 3.1.1结构设计 (11) 3.1.2功能描述 (11) 3.1.3图形处理模块结构图 (11) 3.1.4主要类设计.................................................................... 错误!未定义书签。 3.2 图像处理模块的设计 (12) 3.2.1结构设计 (12) 3.2.3结构图 (13) 4.1 绘图功能的详细设计与实现 (15) 4.1.1 菜单栏 (15) 4.1.2工具栏 (16) 4.1.3画图区 (16) 4.1.4状态栏 (17) 4.2 图像编辑的详细设计与实现 (18) 4.3滤镜处理的详细设计与实现 (19) 4.3.1 图像增强 (19) 4.3.2图像边缘检测 (21) 4.3.3 图像平滑处理 (23) 4.3.4 系统测试 (24) 结论 (26) 致谢 (27)

图形图像处理软件的设计与实现 摘要:随着计算机技术的迅速发展,图形图图像技术在各个领域的研究和应用日益深入和广泛。由于图形图像各种算法的实现,使得其处理速度越来越快,能更好的为人们服务。图形图像处理的信息量很大,对处理速度的要求也比较高。Java 强大的运算和图像展示功能,使图像处理变得更加的简单和直观。同时系统所有的操作设计得十分简单方便,无需具备有专业的知识,也能实现图像图像处理。 Java是一种完全面向对象的语言,Java语言的设计集中于对象及其接口,它提供了简单的类机制以及动态的接口模型。本文基于Java的图形图像处理环境,设计并实现了以图形图像处理系统,展示如何通过利用Java实现对图形图像的各种处理。 关键词:Java 绘图板图形图像编辑滤镜处理边缘处理

遥感数字图像处理教程实习报告

遥感数字图像处理教程实习报告

《数字图像处理》 课程实习报告 ( 2011 - 2012学年第 1 学期) 专业班级:地信09-1班 姓名:梁二鹏 学号:310905030114 指导老师:刘春国 ---------------------------------------------- 实习成绩: 教师评语: 教 师

签 名 : 年月日 实习一:图像彩色合成实习 一、实验目的 在学习遥感数字图像彩色合成基础上,应用所学知识,基于遥感图像处 理软件ENVI进行遥感数字图像彩色合成。 二、实验内容 彩色合成:利用TM图像can_tmr.img,实现灰度图像的密度分割、多波 段图像的真彩色合成、假彩色合成和标准假彩色合成。 三、实验步骤 1、显示灰度图像主要步骤: 1、打开ENVI4.7,单击FILE菜单,在下拉菜单中选择open image file 选 项,然后在弹出的对话框中选择can_tmr.img文件,单击打开。 2、在可用波段列表对话框中,选中某一波段图像,选中gray scale单选按 钮,单击LOAD BAND按钮,显示一幅灰度图像。 3、在可用波段列表对话框中,选择其他某一波段图像,进行显示。

4、利用可用波段列表中的display按钮,同时有多个窗口显示多个波段图像。 5、链接显示。利用图像窗口tool菜单下的link子菜单link display实现多图 像的链接显示。如图所示:红色方框。 6、使用tool菜单下的Cursor Location/value和pixel Locator功能在确定像 素的值和位置。

(完整版)图形图像处理案例教程photoshopcs5教案.doc

PS 教学简案建议学时: 64 学时

课题任务参考资料教学方法 教学目标 任务学习重点教学实施 项目一认识Photoshop CS5 本项目参考节数: 6 课时 认识Photoshop CS5 教学配套课件 教师讲解、示范演示、操作辅导, 授课节数 6 课时 学生操作 1.认识 Photoshop CS5 的工作界面 2.学会整理操作窗口 3.掌握 Photoshop 文件的基本操作,学会新建、打开、关闭、保存文件 4.初步掌握图层的基本操作 5.运用历史记录面板还原操作 1.认识Photoshop CS5 的工作界面 2.文件的管理 3.制作一张简单的广告 1.认识Photoshop CS5 的工作界面 2.掌握Photoshop 文件的基本操作,学会新建、打开、关闭、保存文件 3.初步掌握图层的基本操作 任务 1认识Photoshop CS5的工作界面 任务简述:认识Photoshop CS5 的工作界面以及各种菜单、工具 相关知识:(教师讲解、演示,学生操作) 1.认识工作区,进行屏幕切换操作 2.认识工具箱,选择工具进行操作 3.认识工具与属性栏、面板,对不同工具的属性栏进行操作 任务实施:

教学检测教学总结任务 2文件的管理 任务简述:文件管理,包括新建文件、打开文件,把文件以不同的格式存储到指定的位置等,及图层基本操作。 相关知识:(教师讲解、演示,学生操作) 1.文件的管理 2.图层 3.文件格式 任务实施:(教师演示,学生操作训练、教师指导) 按操作步骤操作 任务 3制作一张简单的广告 任务简述:制作一张简单的广告。 相关知识:(教师讲解、演示,学生操作) 1.新建图层 2.图层的复制 3.调整图层顺序 任务实施:(教师演示,学生操作训练、教师指导) 按操作步骤操作 1.任务过程中检查操作效果、检查任务作品 2.完成自我检测 3.布置作业 完成自我检测

计算机图形学与图像处理教案

精编资料 了解图形学与图像处理的发展,应用以及当前国际国内研究的热点和重要成果;理解图形学与图像处理对图元以及图像的分析与理解的以及二维与三维形状重建等;... 图形,图像 计算机图形学与图像处理教案 学时:36,其中讲授26学时,上机10学时。 适用专业:信计专业与数学专业。 先修课程:高等数学、线性代数、数据结构、VC++或者C# 一、课程的性质、教育目标及任务: 计算机图形学与图像处理实际上是两门课程的一个综合。这是一门研究图形学与图像处理的基本理论、方法及其在智能化检测中应用的学科,是计算机科学与技术等电子信息类本科专业的专业课。 本课程侧重于对图形学的基本图元的基本生成,以及图像处理中对图像在空间域与频率域的基本处理算法的研究。并对图形学与图像处理基本理论和实际应用进行系统介绍。目的是使学生系统掌握图形学与图像处理的基本概念、原理和实现方法,学习图形学与图像处理分析的基本理论、典型方法和实用技术,具备解决智能化检测与控制中应用问题的初步能力,为在计算机视觉、模式识别等领域从事研究与开发打下扎实的基础。 二、教学内容基本要求: 1.了解图形学与图像处理的发展、应用以及当前国际国内研究的热点和重要成果; 2.理解图形学与图像处理对图元以及图像的分析与理解的以及二维与三维形状重建等; 3.掌握图形学与图像处理中最基本、最广泛应用的概念、原理、理论和算法以及基本技术和方法; 4.能够运用一门高级语言编写简单的图形学与图像处理软件,实现各种图形学与图像处理的算法。 三、主要教学内容:

学习图形学的基本概念,了解光栅显示系统的原理;掌握基本图元的生成算法:直线的生成算法、曲线的生成算法、多边形的生成算法;掌握区域填充、线段剪裁以及多边形的剪裁;掌握图元的几何变换、以及投影的基本理论。 了解图像的概念;图像数字化的基本原理:取样、量化、数字图像的表示;线性系统理论在图像变换,滤波中的应用:线性系统理论、离散图像变换、小波变换;图像编码压缩、增强,以及复原的基本方法:无失真压缩、有失真压缩、变换编码、压缩标准、图像滤波原理、复原滤波器、直方图运算、点运算;图像识别的基本原理和方法:图像分割、图像分析、图像分类; 四、学时安排 总课时72学时,图形学36学时,其中包括26个学时讲授,10个学时上机;图像处理36学时,其中包括26个学时讲授,10个学时上机; 五、参考书目: (1), Donald Hearn & M,Pauline Baker (2),< Computer Graphics with OpenGL, Third Edition> Donald Hearn & M,Pauline Baker (3),计算机图形学实用技术陈元琰,张晓竞,科学出版社 (4),计算机图形学倪明田,吴良芝北京大学出版社 (5) <>, Rafael C. Gonzalez & Richard E. Woods. Publishing House of Electronics Industry. (6) << Image Processing ,Analysis, and Machine Vision ( second Edition)>> ,Milan Sonka, V aclav Hlavac. Publishing House of People Post 第一讲图形学基本概念 重点: 了解图形学概念;掌握图形学中的几个概念:分辨率,光栅,扫描线,像素,帧缓冲器;了解图形学的基本用途;掌握图形学光栅扫描显示系统的工作原理; 难点: 光栅扫描显示系统的工作原理; 教学方法: 课堂讨论式教学方法,基于问题式以及启发式教学方法相结合。双语教学。 主要内容: 1,什么是计算机图形学? 2,计算机图形学的主要用途是什么? 3,计算机图形学中的一些基本概念: 什么是分辨率?什么是光栅?什么是光栅扫描系统的扫描线?什么是像 素?什么是帧缓冲器?什么是刷新率?

遥感数字图像处理教程复习分析

第一章. 遥感概念 遥感(Remote Sensing,简称RS),就是“遥远的感知”,遥感技术是利用一定的技术设备和系统,远距离获取目标物的电磁波信息,并根据电磁波的特征进行分析和应用的技术。 遥感技术的原理 地物在不断地吸收、发射(辐射)和反射电磁波,并且不同物体的电磁波特性不同。 遥感就是根据这个原理,利用一定的技术设备和装置,来探测地表物体对电磁波的反射和地物发射的电磁波,从而提取这些物体的信息,完成远距离识别物体。 图像 人对视觉感知的物质再现。图像可以由光学设备获取,如照相机、镜子、望远镜、显微镜等;也可以人为创作,如手工绘画。图像可以记录、保存在纸质媒介、胶片等等对光信号敏感的介质上。随着数字采集技术和信号处理理论的发展,越来越多的图像以数字形式存储。因而,有些情况下“图像”一词实际上是指数字图像。 物理图像:图像是人对视觉感知的物质再现 数字图像:图像以数字形式存储。 图像处理 运用光学、电子光学、数字处理方法,对图像进行复原、校正、增强、统计分析、分类和识别等的加工技术过程。 光学图像处理 应用光学器件或暗室技术对光学图像或模拟图像(胶片或图片)进行加工的方法技术 数字图像处理 是通过计算机对图像进行去除噪声、增强、复原、分割、提取特征等处理的方法和技术。图像处理能做什么?(简答) 是通过计算机对图像进行去除噪声、增强、复原、分割、提取特征等处理的方法和技术。数字图像处理主要目的:提高图像的视感质量,提取图像中所包含的某些特征或特殊信息,进行图像的重建,更好地进行图像分析,图像数据的变换、编码和压缩,更好图像的存储和传输。数字图像处理在很多领域都有应用。 遥感图像处理(processing of remote sensing image data )是对遥感图像进行辐射校正和几何纠正、图像整饰、投影变换、镶嵌、特征提取、分类以及各种专题处理的方法。常用的遥感图像处理方法有光学的和数字的两种。

java图形图象处理论文

摘要 随着计算机技术的迅速发展,数字图像处理技术在医学领域的研究和应用日益深入和广泛。现代医学已越来越离不开医学图像处理技术。医学图像处理技术在临床诊断、教学科研等方面发挥了重要的作用。计算机图像处理技术与影像技术的结合从根本上改变了医务人员进行诊断的传统方式。充分地利用这些技术可以提高诊断的正确性和准确性,提高诊断效率,降低医疗成本,可以更加充分地发挥各种医疗设备的功能。而且,随着数字化、智能化进程的深人,图像处理技术在医疗卫生领域将会有更加广阔的应用前景。 Java是Sun公司推出的一种面向对象编程语言。Java非常适合于企业网络和Internet 环境,现已成为Internet中最受欢迎、最有影响的编程语言之一。目前国内使用Java语言开发的图像处理系统比较少,这也增加了这方面的研究价值。 本文首先对图像增强和图像分割中的几种算法进行了介绍,包括线性灰度变换,伪彩色处理,平滑处理,中值滤波,阈值分割,边缘检测等。然后用Java语言对上述各算法编程实现,并设计Java GUI(图形用户界面)用来显示图像处理的结果,以及创建一个数据库用于存储医学图像。 关键词:医学图像;图像增强;图像分割;面向对象

Abstract As the computer technique’s quickly development, the image process technique having been more deeply and widely in the use and study of medical science. The modern medical science can not work well without the medical image processing technology; it has made an important use in clinical diagnosis and education study. The combination of the image processing technique and imaging technique has changed the way that traditional diagnosis. Make adequately use of this techniques will be increase accuracy, increase the efficiency of diagnosis, decrease the cost of medical treatment and make the most use of function with medical treatment equipments. Moreover, as the deeply with the arithmetic figure and the intelligence, the image processing technique will have a more wonderful future. Java is a kind of object-oriented programming language from the company of Sun. The Java is becoming a most welcome and influence programming language which suits for the business network and the environment of internet. Currently, use Java language to developed image processing system is not very frequency in our country. So, this is a cause of increasing the value of study. This project introduces some kinds of algorithms in image enhancement and image segmentation. It includes linear grey level transformation, pseudo-color processing, smooth processing, median filter, threshold segmentation, edge detection and so on. Then, use Java to program and realize. And show the result of image processing using Java GUI (Graphical User Interface), as well as create a database to stock medical image. Key Words: medical image; image enhancement; image segmentation; object-oriented

图形图像处理期末考试A、B卷及答案

计算机专业《图形图像处理》期末考试试卷(A) 考试时间:90分钟 姓名____________ 学号____________ 成绩______________ 填空题(50分)每空1分 除了使用按钮进行软件的退出之外,还有其他3种方法同样可以将软件关闭,分别是 ___________、___________、___________。 新建文件的方法有3种,分别是___________、___________、___________。 打开文件的方法有3种,分别是___________、___________、___________。 将鼠标光标放置在_________栏的蓝色区域上双击,即可将窗口在最大化和还原状态之间切换。按键盘中的_______键可以将工具箱、属性栏和控制面板同时显示或隐藏。 在RGB【颜色】面板中【R】是___________颜色、【G】是___________颜色、【B】是___________颜色。 图像文件的大小以___________和___________为单位,它们之间的大小换算单位为___________KB=___________MB。 按键盘中的___________键,可以将当前工具箱中的前景色与背景色互换。 当利用工具绘制矩形选区时,按下键盘中的___________形态的选择区域; 按下键盘中的___________形态的选择区域;按下键盘中的 绘制___________形态的选择区域。 在Photoshop系统中,新建文件默认分辨率值为___________像素点/英寸,如果进行精美彩印刷图片的分辨率最少应不低于__________像素点/英寸。 在【通道】面板底部有四个按钮,它们的功能分别是:___________按钮、___________按 钮、___________按钮、___________按钮。 在利用滤镜菜单栏中的【高斯模糊】命令进行虚化的投影效果制作时,应注意图层面板中的___________选项不被勾选。 可以快速弹出【画笔预设】面板的快捷键是_______。 在图像文件中创建的路径有两种形态,分别为________和________。 矢量图形工具主要包括______工具、______工具、______工具、______工具、______工具和______工具。 在Photoshop 7.0软件中,可以将输入的文字转换成________和_______进行编辑,也可以将其进行栅格化处理,即将输入文字生成的文字层直接转换为________。另外还可以将输入的_______和

数字图像处理习题教程文件

数字图像处理习题

一、判断题(10分)(正确√,错误×) 1.图像处理就是对图像信息进行加工处理,以满足人的视觉心理和实际应用的要求 (√) 2.在MA TLAB中,uint8是无符号8位整数(√) 3.在MA TLAB中,uint16是无符号16位整数(√) 4.图像的点运算与代数运算不相同(√) 5.点运算也叫灰度级变换(√) 6.线性点运算可以改变数字图像的对比度(√) 7.图像的几何变换也叫图像的点运算(×) 8.图像的平滑操作实际上是邻域操作(√) 9.傅立叶变换后的矩阵处在频域上(√) 10.傅立叶变换后的矩阵处在空域上(×) 11.傅立叶变换,人们可以在空域和频域中同时思考问题(√) 12.像素深度是指存储每个像素所用的位数(√) 13.图像经过变换后,图像的大部分能量都集中在中、高频段(×) 14.图像经过变换后,图像的大部分能量都集中在低频段(√) 15.直方图均衡化也是一种非线性点运算(√) 16.仿射变换是空间变换(√) 17.空间变换是频域变换(×) 18.边缘检测是将边缘像元标识出来的一种图像分割技术(√) 19.灰度直方图能反映一幅图像各灰度级像元占图像的面积比(√) 20.直方图均衡是一种点运算,图像的二值化则是一种局部运算(×) 21.双边滤波法可用于边缘增强(×) 22.均值平滑滤波器可用于锐化图像边缘(×) 23.拉普拉斯算子可用于图像的平滑处理(×) 24.高频加强滤波器可以有效增强图像边缘和灰度平滑区的对比度(√) 25.应用傅立叶变换的可分离性可以将图像的二维变换分解为行和列方向的一维变换 (√) 26.图像分割可以依据图像的灰度、颜色、纹理等特性来进行(√) 27.图像增强有空域和变换域两类(√) 28.加大、减小对比度分别会使图像发生亮处更亮,暗处更暗的直观变化(√) 29.加大、减小亮度分别会使图像发生亮处更亮,暗处更暗的直观变化(×) 30.二值图像就是只有黑白两个灰度级(√) 31.一般来说,图像采样间距越大,图像数据量越大,质量越好;反之亦然(×) 32.用Matlab开辟一个图像窗口的命令是imshow(×) 33.图像尺寸为400*300是指图像的宽为400毫米,高为300毫米(×) 34.一般而言,对于椒盐噪声,均值滤波的效果好于中值滤波(×) 35.与高斯低通滤波器相比,理想低通滤波低通滤波器在图像处理过程中更容易出现振铃 (rings)(√)

彩色图像处理存在的问题及应对策略(附图)

彩色图像处理存在的问题及应对策略(附图)相对于黑白图像处理,彩色图像处理有明显的优势,但是应考虑以下关键问题: 一、色彩准确性 色彩准确性即彩色图像处理需要考虑的颜色精度和差异程度。 许多图像处理中,处理算法必须区分检测到的颜色和目标值之间的差异。因此颜色的准确性非常重要,决定里一个算法的成败。 决定色彩准确性的的是插值算法,插值可能导致颜色检测的细微差异,因为它需要周围像素来确定每个像素的颜色值。 二、色彩串扰性 色彩串扰也是影响色彩准确性的关键因素。色彩串扰是由于红、蓝、绿通道的光谱响应之间相当大的重叠造成的。 当通道之间有大量重叠时,某些颜色系列,尤其是黄或蓝绿色系列,会有很大的不确定性。 色彩串扰会导致色彩伪像和色彩混淆。色彩处理时需要注意提取目标与背景色彩串扰的大小,可通过偏光镜等尽量避免色彩串扰。 ▲棱镜相机中使用的二向色涂层比拜耳滤光片产生更陡的光谱曲线,以最大限度地减少由色彩串扰引起的不确定性。

三、莫尔图案 当图像中包含重复阵列图像时,图像会出现摩尔条纹。 大规模混叠可导致莫尔图案的出现。虽然任何需要捕获更高空间频率的相机都会出现这种效果,但拜耳相机 - 再次因为插值技术 - 更容易出现这种情况。 ▲具有重复颜色混叠的区域中的人造颜色图案可以出现在拜耳图像中。 四、色彩对分辨率的影响 与单色系统相比,彩色相机大大降低了相机的有效分辨率。 虽然拜耳相机可能有500万像素(5百万像素),但插值过程会“平均”许多小细节,使有效分辨率达到整个像素数的三分之一左右。 彩色图像处理存在以上四个问题,因此进行彩色图像处理时需要采取以下四种措施: 一、光照水平和灵敏度 根据系统的亮度级别和可容忍的增益/噪声级别,选择合适的关照说以及相机色彩灵敏度。

JAVA图像处理分段线性拉伸

import com.sun.media.jai.widget.DisplayJAI; import java.awt.GridLayout; import javax.media.jai.JAI; import javax.media.jai.PlanarImage; import javax.swing.BorderFactory; import javax.swing.JScrollPane; import javax.swing.border.TitledBorder; /* * PieceWise.java * 版权所有- 贺向前 * 邮件:hexiangqian@https://www.doczj.com/doc/217318516.html, * QQ: 910019784 * 未经授权,不得复制、传播。 */ /** * * @author Administrator */ public class PieceWise extends javax.swing.JFrame { /** Creates new form PieceWise */ public PieceWise() { initComponents(); setTitle("分段线性拉伸"); setLayout(new GridLayout(2,2)); } private PlanarImage loadImage(String fileName){ PlanarImage im=JAI.create("fileload",fileName); return im; } private void showImage(PlanarImage im,String str){ DisplayJAI dj=new DisplayJAI(im); JScrollPane jp=new JScrollPane(dj); TitledBorder titledBorder=BorderFactory.createTitledBorder(str); jp.setBorder(titledBorder); add(jp); } /** This method is called from within the constructor to * initialize the form. * WARNING: Do NOT modify this code. The content of this method is

图形图像处理基础知识.

图形图像处理技能培训和鉴定标准 1定义 使用计算机及图形图像输入输出设备和图形图像处理软件处理静态或动态图形图像的工作技能。 2适用对象 从事工艺美术、室内装璜、广告艺术、建筑外观、产品模型、影视图像、图文排版、图文印刷、计算机多媒体技术工作人员以及其他需要掌握图形图像处理软件操作技能的社会劳动者。 3相应等级 图像制作员:专项技能水平达到相当于于中华人民共和国职业资格技能等级四级。能独立、熟练地应用图形图像制作软件基本功能完成静态或动态图形图像处理工作。 高级图像制作员:专项技能水平达到相当于于中华人民共和国职业资格技能等级三级。能独立、熟练地结合应用图形图像软件基本功能完成静态和动态图形图像处理工作。图像制作师:专项技能水平达到相当于于中华人民共和国职业资格技能等级二级。能独立、熟练地结合应用图形图像软件的功能完成静态和动态图形图像创意和设计工作。 4培训期限 图像制作员:短期强化培训 100~120学时。 高级图像制作员:短期强化培训 150~170学时。 图像制作师:短期强化培训 150~170学时。 5技能标准

5.1图像制作员 5.1.1一般知识要求 了解平面及立体构图基本知识和计算机彩色模式及基本配色原理; 掌握微机及常用图形图像处理设备 (如鼠标器、扫描仪、打印机等基本连接和简单使用的相关知识; 掌握计算机 DOS 和 Windows 两种操作系统的基本知识和基本命令的使用, 特别是文件管理、图形图像文件格式及不同格式的特点和相互间转换的基本知识; 掌握点阵图像和矢量图形的特点; 了解动画的基本概念。 5.1.2技能要求 具有图形图像制作软件基本的使用能力; 具有基本的图像扫描设备和输出设备的使用能力; 实际能力要求达到:能使用图形图像处理相关软件和图像扫描、输出设备独立完成三维静态图像和动画制作工作。 5.2高级图像制作员 5.2.1一般知识要求 了解平面和立体构图基本知识和计算机彩色模式及基本配色原理; 掌握微机及常用图形图像处理设备 (如鼠标器、扫描仪、打印机等基本连接和简单使用的相关知识;

遥感数字图像处理教程期末复习题

遥感数字图像处理教程 第一章概论 1.1图像和遥感数字图像 1.1.1图像和数字图像 本书定义图像为通过镜头等设备得到的视觉形象 根据人眼的视觉可视性可将图像分为可视图像和不可视图像。可视图像有图片、照片、素描和油画等,以及用透镜、光栅和全息技术产生的各种可见光图像。不可见图像包括不可见光成像和不可测量值 按图像的明暗程度和空间坐标的连续性,可将图像分为数字图像和模拟图像。数字图像是指用计算机存储和处理的图像,是一种空间坐标和灰度不连续、以离散数字原理表达的图像。在计算机内,数字图像表现为二维阵列,属于不可见图像。模拟图像指空间坐标和明暗程度连续变化的、计算机无法直接处理的图像,属于可见图像。 利用计算机技术,可以实现模拟图像和数字图像之间相互转换。把模拟图像转化为数字图像成为模/数转换,记作A/D转换; 数字图像最基本的单位是像素。像素是A/D转换中国的取样点,是计算机图像处理的最小单位;每个像素具有特定的空间位置和属性特征。 1.1.2遥感数字图像 遥感数字图像时数字形式的遥感图像。不同的地物能够反射或辐射不同长波的电磁波,利用这种特性,遥感系统可以产生不同的遥感数字图像。 遥感数字图像中的像素成为亮度值。亮度值的高低由遥感传感器所探测到的地物电磁波的辐射强度决定。由于地物反射或辐射电磁波的性质不同受大气的影响不同,相同地点不同图像的亮度值可能不同。 图像的每个像素对应三维世界中的一个实体、实体的一部分或多个实体。在太阳照射下,一些电磁波被这个实体反射,一些被吸收。反射部分电磁波到达传感器被记录下来,成为特定像素点的值。 1.2压感数字图像处理 1.2.1遥感数字图像处理概述 遥感数字图像处理是利用计算机图像处理系统对遥感图像中的像素进行系列操作的过程。遥感数字图像处理主要包括三个方面 1.图像增强,使用多种方法,如:灰度拉伸、平滑、瑞华、彩色合成、主成分变换K-T变换、代数运算、图像融合等压抑、去除噪声、增强整体图像或突出图像中的特定地物的信息,是图像更容易理解、解释和判读、 图像增强着重强调特定图像特征,在特征提取、图像分析和视觉信息的显示很有用。 2.图像校正:图像校正也成图像回复、图像复原,主要是对传感器或环境造成的退化图像进行模糊消除、噪声滤除、几何失真或非线性校正。 信息提取:根据地物光谱特征和几何特征,确定不同地物信息的提取规则。 1.2.2 遥感数字图像处理系统 数字图像处理需要借助数字图像处理系统来完成。一个完整的遥感数字图像处理系统包括硬件系统和软件系统两大部分。 1.硬件系统 包括计算机、数字化设备、大容量存储、显示器和输出设备以及操作台 1)计算机 是图像处理核心,大的内存和高的CPU速度有助于加快处理的进度。 2)数字化设备

数字图像处理之彩色图像的处理

实验六彩色图像的处理 一、实验目的 1、掌握matlab中RGB图像与索引图像、灰度级图像之间转换函数。 2、了解RGB图像与不同颜色空间之间的转换。 3、掌握彩色图像的直方图处理方法。 二、实验内容及步骤 1、RGB图像与索引图像、灰度级图像的转换。 close all RGB=imread('flowers.tif'); [R_i,map]=rgb2ind(RGB,8);%RGB图像转换为8色的索引图像 figure imshow(R_i,map) [R_g]=rgb2gray(RGB);%RGB图像转换为灰度级图像 figure imshow(R_g)

思考: 将RGB 图像’flowers.tif ’分别转换为32色、256色、1024色索引图像,是否调色板所表示的颜色值越多图像越好? close all

RGB=imread('flowers.tif'); [R_i1,map]=rgb2ind(RGB,8);%RGB图像转换为8色的索引图像 [R_i2,map]=rgb2ind(RGB,32);%RGB图像转换为32色的索引图像 [R_i3,map]=rgb2ind(RGB,256);%RGB图像转换为256色的索引图像 [R_i4,map]=rgb2ind(RGB,1024);%RGB图像转换为1024色的索引图像 Subplot(221);imshow(R_i1,map);title('8色的索引图像'); Subplot(222);imshow(R_i2,map);title('32色的索引图像'); Subplot(223);imshow(R_i3,map);title('256色的索引图像'); Subplot(224);imshow(R_i4,map);title('1024色的索引图像'); 结论:随着索引值的增加图像的质量也有增加,更加清晰,色彩也更加鲜明。但不是不是颜色值越多越好。当索引值过高时,会出现无法识别而致模糊的情况出现。 2、RGB图像与不同颜色空间的转换。 (1) RGB与HSI颜色空间的转换 HSI应用于彩色图像处理。实验六文件夹中rgb2hsi( )函数将RGB颜色空间转换为HSI 空间并显示各分量,hsi2rgb( )函数是将HSI颜色空间转换为RGB颜色空间。 close all

第11章java图像图形处理

第十一章图形图像处理 在前边的章节的图形用户界面的处理中,已经看到了图像的应用。本章将简要介绍如何在用户屏幕上绘制图形以及如何显示图像。 图形 在前边我们已经介绍了用户屏幕和容器的概念,也看到了如何在容器中添加组件。一般来说,在用户屏幕上绘制图形其实就是在容器组件上绘制图形。因此需要注意以下两点:1)组件中的坐标系统 容器组件的坐标系统类似于屏幕的坐标系统,坐标原点(0,0)在容器的左上角,正x 轴方向水平自左向右,正y轴方向垂直自上向下。 在java中,不同的图形输出设备拥有自己的设备坐标系统,该系统具有与默认用户坐标系统相同的方向。坐标单位取决于设备,比如,显示的分辨率不同,设备坐标系统就不同。一般来说,在显示屏幕上的计量单位是像素(每英寸大约90个像素),在打印机上是点(每英寸大约600个点)。Java系统自动将用户坐标转换成输出设备专有的设备坐标系统。 2)图形环境(graphics context) 由于在组件上绘制图形使用的用户坐标系统被封装在Graphics2D类的对象中,所以Graphics2D被称之为图形环境。它提供了丰富的绘图方法,包括绘制直线、矩形、圆、多边形等。 下边我们先介绍与绘制图形相关的类,再介绍绘制图形的方法和步骤。 11.1.1 绘制图形的类 与绘制图形有关的类的层次结构如下: |- | |- |-

Graphics 类是所有图形类的抽象基类,它允许应用程序可以在组件(已经在各种设备上实现)上进行图形图像的绘制。Graphics 对象封装了 Java 支持的基本绘制操作所需的状态信息,其中包括组件对象、绘制和剪贴坐标的转换原点、当前剪贴区、当前颜色、当前字体、当前的逻辑像素操作方法(XOR 或 Paint)等等。 Graphics2D类是从早期版本()中定义设备环境的Graphics类派生而来的,它提供了对几何形状、坐标转换、颜色管理和文本布局更为复杂的控制。它是用于在Java(tm)平台上绘制二维图形、文本和图像的基础类。 GraphicsDevice类定义了屏幕和打印机这类可用于绘制图形的设备。 GraphicsEnvironment类定义了所有可使用的图形设备和字体设备。 GraphicsConfiguration类定义了屏幕或打印机这类设备的特征。在图形绘制过程中,每个 Graphics2D 对象都与一个定义了绘制位置的目标相关联。GraphicsConfiguration 对象定义绘制目标的特征(如像素格式和分辨率等)。在Graphics2D对象的整个生命周期中都使用相同的绘制标准。 Griphics和Graphics2D类都是抽象类,我们无法直接创建这两个类的对象,表示图形环境的对象完全取决于与之相关的组件,因此获得图形环境总是与特定的组件相关。 创建Graphics2D 对象时,GraphicsConfiguration 将为Graphics2D 的目标(Component 或 Image)指定默认转换,所有 Graphics2D 方法都采用用户空间坐标。 一般来说,图形的绘制过程分为四个阶段:确定绘制内容、在指定的区域绘制、确定绘制的颜色、将颜色应用于绘图面。有三种绘制操作:几何图形、文本和图像。 绘制过程中,Graphics2D对象的6个重要属性如下: Paint 颜料属性决定线条绘制的颜色。它也定义填充图形的颜色和模式,系统默认的颜料属性是组件的颜色。 Font 字体属性定义了绘制文本时所使用的字体,系统默认的字体是组件的字体设置。 Stroke 画笔属性确定线型,如实线、虚线或点划线等。该属性也决定线段端点的形状。系统默认的画笔是方形画笔,绘制线宽为1的实线,线的末端为方形,斜角线段接口为45度斜面。 Transform 转换属性定义渲染过程中应用的转换方法。可以使绘制的图形平移、旋转和

ps图形图像处理案例教程试题

《图形图像处理案例教程》题库 一、单选题 1.下列哪种方法能打开文件:() A.“文件”菜单中“打开”命令 B.Ctrl+S C.状态栏上“打开”按钮 D.Ctrl 双击界面空白 答案:A 2.绘制选框和图形时,以某点为中心应按住:()。 A.Ctrl B.Alt C.Shift D.Tab 答案:B 3.橡皮擦工具不包括:()。 A.橡皮擦 B.彩色橡皮 C.背景橡皮擦 D.魔术捧橡皮擦答案:B 4.每个图像文件最多有()图层。 A.80 B.800 C.8000 D.80000 答案:C 5.以下哪些工具属性栏包含“容差”:()。 A.铅笔 B.渐变 C.画图 D.油漆桶 答案:D 6.新建文件时,可选择的图像模式有:()。 A.位图 B.RGB C.CMYK D.全是 答案:D 7.设置绘图颜色可以用哪些方法:()。 A.拾色器 B.颜色面板 C.色板面板 D.都可以 答案:D 8.选择“选择”菜单中()菜单命令可以选取特定颜色范围内的图像。 A.全选 B.反选 C.色彩范围 D.取消选择 答案:C 9.选择“选择”菜单下的()命令可以执行反选操作。 A.全选 B.反选 C.羽化 D.载入选区 答案:B 10.选择“选择”菜单下的()命令可以羽化选区。 A.全选 B.反选 C.羽化 D.载入选区 答案:C 11.下面()选项的方法能对选区进行变换或修改操作。 A.选择[选择]下[变换选区]菜单命令 B.选择[选择]下[修改]子菜单中的命令 C.选择[选择]下[保存选区]菜单命令

D.选择[选择]下[变换选区]菜单命令后再选择[编辑]下[变换]子菜单中的命令。 答案:A 12.选择“编辑”菜单下的()命令可以将剪贴板上图像粘帖到选区。 A.粘贴 B.合并拷贝 C.粘贴入 D.拷贝 答案:C 13.下面哪些方法能对选到的图像进行变换操作()。 A.选择[图像]下[旋转画布]子菜单中的命令 B.按【Ctrl T】键 C.选择[编辑]下[变换]子菜单中的变换命令 D.选择[编辑]下[变换选区]菜单命令 答案:B 14.选择[编辑]下[填充]命令不能对图像区域进行()填充。 A.前景色 B.背景色 C.图案 D.渐变色 答案:D 15..通过图层面板复制层时,先选取需要复制的图层,然后将其拖动到图层面板底部的()按钮上即可。 A.删除 B.新建 C.图层效果 D.新建图层蒙版 答案:B 16.通过下面()方法能创建路径。 A.使用钢笔工具 B.使用转换点工具 C.使用添加锚点工具 D.先建立选区,再将其转化为路径答案:A 17.自由变换的热键是()。 A.Ctrl F B.Ctrl R C.Ctrl E D.Ctrl T 答案:D 18.退出Photoshop程序命令是()。 A.Ctrl+F4 B.Ctrl+W C.ALT+F4 D.ALT+W 答案:B 19.创建一个新文件用命令()。 A.Ctrl O B.Ctrl N C.ALT F4 D.Ctrl W 答案:B 20.按键盘“T”键可以激活工具()。 A.文字工具 B.渐变工具 C.选取工具 D.铅笔工具 答案:A 21.打开图像文件用命令()。 A.Ctrl+O B.Ctrl+X C.Ctrl+D D.Ctrl+W 答案:A

相关主题
文本预览
相关文档 最新文档