ISSN 1009-3044
Vol.15, No.28,October. 2019
第15 卷第28 期 (2019 年10 月)
ComputerKnowledgeandTechnology电脑知识与技术
xsjl@dnzs.net.cn
//www.dnzs.net.cn
+86-551-65690963 65690964
ComputerKnowledgeandTechnology电脑知识与技术
E-mail
http
Tel
:
:
:
基于Java 技术的数字图像处理系统的开发
王振铎,边倩
710038
)
Java Swing
(西安思源学院电子信息工程学院,陕西 西安
va
技术对图像进行处理,利用
Java
opencv
关键词:图像处理;
;
TP391
A
1009-3044(2019)28-0097-03
文献标识码:
中图分类号:
文章编号:
摘要:数字图像处理是在计算机科学、医学、物理学等学科基础上发展起来的一门科学,它广泛应用在各行各业。利用
Ja⁃
实现可视化。该系统性能稳定,功能实用,且具有良好的扩展性。
开放科学(资源服务)标识码(
):
OSID
Development of digital image processing system based on Java technology
DOI:10.14004/j.cnki.ckt.2019.3563
Wang Zhen duo, Bian Qian
(School of Electronic and Information Engineering, Xian Siyuan University, Xi
Abstract
Digital image processing is a science developed on the basis of computer science, medicine, physics and other disci⁃
plines. It is widely used in all walks of life. Java technology is used for image processing, and Java Swing is used for visualization.
The system has stable performance, practical function and good expansibility.
Keywords: image processing; Java; oepncv
an 710038 China)
’
:
1 引言
2.3 在eclipse 中加入opencv 的类库
图像处理旨在将图像转化为一个数字矩阵保存在电脑中,
并利用一定的算法对其进行处理。图像处理的基础是数学,最
核心的任务就是各种算法的设计和实现。目前,图像处理技术
已经广泛应用在各行各业中。例如:生物医学、数字地图,通讯
技术、工业生产、计算机科学等等。所以,将数字图像保存到数
据库中,进行相应的图像处理和图像识别,是图像应用的研究
基础。本文利用
技术开发了一种数字图像处理系统。此
系统可以方便地实现各种常用的操作,同时也为后期医学影像
的处理打下了基础
2 开发环境
2.1 Eclipse 环境下java 中调用opencv 库
Java
[1-5]
。
C
是一个可以在多个操作系统环境下的计算机视觉
Java
库,提供了通用的图像处理和计算机视觉方面的算法实现。并
提供了多种语言接口,例如:
2.2 eclipse 中java 调用opencv 库的方法
opencv
jar
opencv-24.13.3.
opencv
官 网 上 下 载
C++
首 先 从
的 库(
C#
等。
、
、
、
);
opencv
2.4 测试一个简单的javaopecv 程序,验证环境的正确性
public static void main(String[] kk) {
decs.CV_LOAD_IMAGE_GRAYSCALE);
System.loadLibrary(Core.NATIVE_LIBRARY_NAME);
File imgFile = new File("d:/opencv/testopecv1.png");
String mubiao = "d:/opencv/mubiao";
Mat src = Imgcodecs.imread(imgFile.toString(), Imgco⁃
Mat dst = new Mat();
Imgproc.adaptiveThreshold(src, dst, 255, Imgproc.ADAP⁃
TIVE_THRESH_MEAN_C, Imgproc.THRESH_BINARY, 13, 5);
Imgcodecs.imwrite(dest + "/AdaptiveThreshold" + img⁃
File.getName(), dst);
如果可以正常执行,表明
opevcv
类库已经正确引入了。
3 Java 处理数字图像的流程
数字图像的处理主要是图像的预处理和识别,其中图像预
处理主要包括:
3.1 图像灰度化;二值化
RGB
在
模型中,若
R=G=B
时,则彩色表现为灰度颜色,灰
}
收稿日期:2019-05-25
基金项目:西安思源学院2019 年度自然科学研究项目(XASY-B1905)资助;陕西省教育科学“十三五”规划2018 年度课题《新工科背
景下的应用型本科物联网应用人才创新培养模式的探索与实践研究》(SGH18H526)资助;西安思源学院 2019 年度教学研
究项目资助
作者简介:王振铎(1974—),男,副教授,硕士,主要研究方向为软件工程。
本栏目责任编辑:谢媛媛
软件设计开发
97
ComputerKnowledgeandTechnology电脑知识与技术
0-255
R=G=B
,其中
的值叫灰度值;所以,灰度图像每
度范围为
个像素点只需一个字节存放灰度值
。一
般常用的是加权平均法来求像素点的灰度值,常用的加权方法
有
又称强度值、亮度值
Gray = B ; Gray = G ; Gray = R
种,如下:
5
1
)
(
三个分量的某一个分量作为该点的灰
)
分量法,即用
RGB
度值;2
Gray = max({B , G , R})
)
最大值法,取彩色图像中的三个分量亮度的最大值作为灰
度图的灰度值;
Gray = (B + G + R) / 3
3
)
将彩色图像中的三分量求平均得到一个灰度图;后两种都
属于加权平均法
4
5
Gray = 0.072169 * B + 0.715160 * G + 0.212671 * R
opencv
Gray = 0.11 * B + 0.59 * G + 0.3 * R
)
是
)
从人体生理学角度所提出的一种求灰度值算法
开发库所采用的一种求灰度值算法
(
)
人眼对绿
另外,图像的二值化,就是将
这两个极点,也就是
255
0
色的敏感最高,对蓝色敏感最低
图像上的像素点的灰度值设置位
将整个图像呈现出明显的只有黑和白的视觉效果。
3.2 图像降噪,去除干扰线
或
现实中的数字图像在数字化和传输过程中常受到成像设
备与外部环境噪声干扰等影响,为了减少数字图像中噪声的过
程称为图像降噪。
3.3 图像腐蚀、膨胀处理
图像的腐蚀就是图像的一部分区域与指定的核进行卷积,
求核的最小值并赋值给指定区域。 腐蚀可以理解为图像中高
亮区域的领域缩小。图像的膨胀是将图像的一部分区域与指
定的核进行卷积,求核的最大值并赋值给指定区域。 膨胀可
以理解为图像中高亮区域的领域扩大。
3.4 图像分割
图像分割就是把图像分成若干个特定的、具有独特性质的
区域,以便提取感兴趣目标的技术和过程。它是由图像处理到
图像分析的关键步骤。
3.5 字符归一化
就是将分割好的图像内的字符归一化到一个标准模板大
小;归一化的理想结果就是:归一化到标准模板大小;倾斜校
正;笔画宽度归一化;字形归一化。
4 数字处理的Java 实现
Java
下面对主要的数字图像处理操作的
实现进行介绍,以
二值化处理为例。
关键代码如下:
//
public class BianaryValue extends Frame {
的图形图像类库(略)
导入
java
Image img,temp;
int w,h;
int[] pixs;
boolean flag=false;
//
构造方法构造界面
pixs,0,iw);
第15 卷第28 期 (2019 年10 月)
图1 图像的二值化处理界面
h
利用
和高度
跟踪图像的加载
获取图像的宽度
MediaTracker
加载图像public void jiazai_ActionPerformed(ActionEvent e){
//
MediaTracker tracker = new MediaTracker(this);
img=Toolkit. getDefaultToolkit(). getImage("Miss.
tr.addImage(img,0);
try{
tr.waitForID(0);
}catch(InterruptedException e2) { e2. printStack⁃
//
w
w=img.getWidth(this);
h=img.getHeight(this);
pixs=new int[w*h];
try{
PixelGrabber pg=new PixelGrabber(img, 0, 0, w, h,
pg.grabPixels();
}catch (InterruptedException e3) {
}
//
ImageProducer
temp=createImage(ip);
flag=true;
repaint();
ip=new MemoryImageSource(w, h,
e3.printStackTrace();
将数组中的象素产生一个图像
//
jpg");
Trace();}
pixs,0,w);
pixs,0,w);
}
//
二值化public void jBinary_ActionPerformed(ActionEvent e){
if(flag) {
try{
PixelGrabber pg=new PixelGrabber(img, 0, 0, w, h,
pg.grabPixels();
}catch (InterruptedException e3) {
}
//
int gray=100;
e3.printStackTrace();
设定二值化的域值,默认值为
100
98
软件设计开发
本栏目责任编辑:谢媛媛
第15 卷第28 期 (2019 年10 月)
化的域值(
输 入 二 值
!",
幅图片
ComputerKnowledgeandTechnology电脑知识与技术
}else{
JOptionPane.showMessageDialog(null,"
"Alert",JOptionPane.WARNING_MESSAGE);
请先打开一
}
//
public void paint(Graphics g){
调用
方法,显示图像信息。
g.drawImage(temp,20,20,this);
}
paint()
if(flag){
}else { }
}
java
另外,数字图像处理还有、数字图像边缘检测去噪,字符化
的类似,读者可以参
2
2
等基本操作,数字图像边缘检测与文献
考文献
,由于篇幅限制,这里不再赘述。
5 结束语
opencv
基于
:
刘伟
[D].
本文介绍了
INTERNET
.
技术处理医学图像的过程和关键实现。
后期数字图像处理还包括图像的识别,利用
识别库,可
以方便地对处理的图像进行识别,证明了系统具有良好的扩
展性。
参考文献
.
[1]
,
[2]
,2007(7):235-236.
.DICOM
[3]
[J].
,2008(10):154-156.
.
Java
[4]
2008(3):115-117.
[5]
刘娜
技术
毕文杰
换
张德成
的医学图像传输与发布系统的研究
医学影像文件格式与常见格式的转
医疗卫生装备
基于
的医学图像数据接口
数字图像边缘检测的
电脑知识与
,2007.
,2009.
泰安
泰山医学院
信息技术
康晓东
医学影像图像处理
北京
人民卫生出版社
[M].
Java
[J].
实现
童小念
李慎江
孙莉
[J].
,
,
.
,
:
【通联编辑:朱宝贵】
Object tmpGray="100";
",tmpGray);
):
还会有异常抛出!
gray=Integer.parseInt(s);
String s=JOptionPane.showInputDialog(null,"
0-255
//
if(s!=null){
}
if(gray>255)
{gray=255;
}else if(gray<0)
{gray=0;
}
//
ColorModel cm=ColorModel.getRGBdefault();
for(int i=0;igray)
{r = 255;
}else{ r=0;}
if(cm.getGreen(pixs[i])>gray)
{g=255;
}else{g=0;}
if(cm.getBlue(pixs[i])>gray)
{b=255;
}else{b=0;}
pixs[i]=alpha<<24|r<<16|g<<8|b;
pixs,0,iw);
将数组中的象素产生一个图像
}
//
ImageProducer ip=new MemoryImageSource(iw, h,
temp=createImage(ip);
repaint();
本栏目责任编辑:谢媛媛
软件设计开发
99