基于java技术的数字图像处理系统的开发

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

软件设计开发
本栏目责任编辑:谢媛媛
基于Java 技术的数字图像处理系统的开发
王振铎,边倩
(西安思源学院电子信息工程学院,陕西西安710038)
摘要:数字图像处理是在计算机科学、医学、物理学等学科基础上发展起来的一门科学,它广泛应用在各行各业。

利用Ja⁃
va 技术对图像进行处理,利用Java Swing 实现可视化。

该系统性能稳定,功能实用,且具有良好的扩展性。

关键词:图像处理;Java ;opencv 中图分类号:TP391
文献标识码:A
文章编号:1009-3044(2019)28-0097-03
开放科学(资源服务)标识码(OSID ):
Development of digital image processing system based on Java technology Wang Zhen duo,Bian Qian
(School of Electronic and Information Engineering,Xian Siyuan University,Xi ’an 710038China)
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
1引言
图像处理旨在将图像转化为一个数字矩阵保存在电脑中,并利用一定的算法对其进行处理。

图像处理的基础是数学,最核心的任务就是各种算法的设计和实现。

目前,图像处理技术已经广泛应用在各行各业中。

例如:生物医学、数字地图,通讯技术、工业生产、计算机科学等等。

所以,将数字图像保存到数据库中,进行相应的图像处理和图像识别,是图像应用的研究基础。

本文利用Java 技术开发了一种数字图像处理系统。

此系统可以方便地实现各种常用的操作,同时也为后期医学影像的处理打下了基础[1-5]。

2开发环境
2.1Eclipse 环境下java 中调用opencv 库
opencv 是一个可以在多个操作系统环境下的计算机视觉
库,提供了通用的图像处理和计算机视觉方面的算法实现。

并提供了多种语言接口,例如:C 、C++、Java 、C#等。

2.2eclipse 中java 调用opencv 库的方法
首先从opencv 官网上下载opencv 的库(opencv-24.13.3.
jar );
2.3在eclipse 中加入opencv 的类库
2.4测试一个简单的javaopecv 程序,验证环境的正确性
public static void main(String[]kk){
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⁃
decs.CV_LOAD_IMAGE_GRAYSCALE);
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 类库已经正确引入了。

3Java 处理数字图像的流程
数字图像的处理主要是图像的预处理和识别,其中图像预处理主要包括:3.1图像灰度化;二值化
在RGB 模型中,若R=G=B 时,则彩色表现为灰度颜色,灰
收稿日期:2019-05-25基金项目:西安思源学院2019年度自然科学研究项目(XASY-B1905)资助;陕西省教育科学“十三五”规划2018年度课题《新工科背
景下的应用型本科物联网应用人才创新培养模式的探索与实践研究》(SGH18H526)资助;西安思源学院2019年度教学研究项目资助
作者简介:王振铎(1974—),男,副教授,硕士,主要研究方向为软件工程。

97
本栏目责任编辑:谢媛媛
软件设计开发
Computer Knowledge and Technology 电脑知识与技术第15卷第28期(2019年10月)
度范围为0-255,其中R=G=B 的值叫灰度值;所以,灰度图像每个像素点只需一个字节存放灰度值(又称强度值、亮度值)。

一般常用的是加权平均法来求像素点的灰度值,常用的加权方法有5种,如下:
1)Gray =B ;Gray =G ;Gray =R 分量法,即用RGB 三个分量的某一个分量作为该点的灰度值;
2)Gray =max({B ,G ,R})最大值法,取彩色图像中的三个分量亮度的最大值作为灰度图的灰度值;
3)Gray =(B +G +R)/3
将彩色图像中的三分量求平均得到一个灰度图;后两种都属于加权平均法
4)Gray =0.072169*B +0.715160*G +0.212671*R 是opencv 开发库所采用的一种求灰度值算法5)Gray =0.11*B +0.59*G +0.3*R
从人体生理学角度所提出的一种求灰度值算法(人眼对绿色的敏感最高,对蓝色敏感最低)另外,图像的二值化,就是将图像上的像素点的灰度值设置位0或255这两个极点,也就是将整个图像呈现出明显的只有黑和白的视觉效果。

3.2图像降噪,去除干扰线
现实中的数字图像在数字化和传输过程中常受到成像设备与外部环境噪声干扰等影响,为了减少数字图像中噪声的过程称为图像降噪。

3.3图像腐蚀、膨胀处理
图像的腐蚀就是图像的一部分区域与指定的核进行卷积,求核的最小值并赋值给指定区域。

腐蚀可以理解为图像中高亮区域的领域缩小。

图像的膨胀是将图像的一部分区域与指定的核进行卷积,求核的最大值并赋值给指定区域。

膨胀可以理解为图像中高亮区域的领域扩大。

3.4图像分割
图像分割就是把图像分成若干个特定的、具有独特性质的区域,以便提取感兴趣目标的技术和过程。

它是由图像处理到图像分析的关键步骤。

3.5字符归一化
就是将分割好的图像内的字符归一化到一个标准模板大小;归一化的理想结果就是:归一化到标准模板大小;倾斜校正;笔画宽度归一化;字形归一化。

4数字处理的Java 实现
下面对主要的数字图像处理操作的Java 实现进行介绍,以二值化处理为例。

关键代码如下:
//导入java 的图形图像类库(略)
public class BianaryValue extends Frame {
Image img,temp;int w,h;int[]pixs;
boolean flag=false;//
构造方法构造界面
图1图像的二值化处理界面
//加载图像
public void jiazai_ActionPerformed(ActionEvent e){
//利用MediaTracker 跟踪图像的加载
MediaTracker tracker =new MediaTracker(this);img=Toolkit.getDefaultToolkit().getImage("Miss.
jpg");
tr.addImage(img,0);try{
tr.waitForID(0);
}catch(InterruptedException e2){e2.printStack⁃
Trace();}
//获取图像的宽度w 和高度h w=img.getWidth(this);h=img.getHeight(this);pixs=new int[w*h];try{
PixelGrabber pg=new PixelGrabber(img,0,0,w,h,
pixs,0,w);
pg.grabPixels();
}catch (InterruptedException e3){
e3.printStackTrace();}
//将数组中的象素产生一个图像
ImageProducer ip=new MemoryImageSource(w,h,
pixs,0,w);
temp=createImage(ip);flag=true;repaint();}//二值化
public void jBinary_ActionPerformed(ActionEvent e){
if(flag){try{
PixelGrabber pg=new PixelGrabber(img,0,0,w,h,
pixs,0,iw);
pg.grabPixels();
}catch (InterruptedException e3){
e3.printStackTrace();}
//设定二值化的域值,默认值为100int gray=100;
98
软件设计开发
本栏目责任编辑:谢媛媛Computer Knowledge and Technology 电脑知识与技术
第15卷第28期(2019年10月)
Object tmpGray="100";
String s=JOptionPane.showInputDialog(null,"输入二值
化的域值(0-255):",tmpGray);
//还会有异常抛出!if(s!=null){
gray=Integer.parseInt(s);}
if(gray>255){gray=255;}else if(gray<0){gray=0;}
//对图像进行二值化处理,Alpha 值保持不变ColorModel cm=ColorModel.getRGBdefault();for(int i=0;i<w*h;i++){int r,g,b;//红、绿、蓝
int alpha=cm.getAlpha(pixs[i]);if(cm.getRed(pixs[i])>gray){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;}
//将数组中的象素产生一个图像
ImageProducer ip=new MemoryImageSource(iw,h,
pixs,0,iw);
temp=createImage(ip);repaint();
}else{
JOptionPane.showMessageDialog(null,"请先打开一幅图片!",
"Alert",JOptionPane.WARNING_MESSAGE);
}
}
//调用paint()方法,显示图像信息。

public void paint(Graphics g){
if(flag){
g.drawImage(temp,20,20,this);}else {}}另外,数字图像处理还有、数字图像边缘检测去噪,字符化等基本操作,数字图像边缘检测与文献2的类似,读者可以参考文献2,由于篇幅限制,这里不再赘述。

5结束语
本文介绍了java 技术处理医学图像的过程和关键实现。

后期数字图像处理还包括图像的识别,利用opencv 识别库,可以方便地对处理的图像进行识别,证明了系统具有良好的扩展性。

参考文献
[1]刘伟.基于INTERNET 的医学图像传输与发布系统的研究[D].泰安:泰山医学院,2007.
[2]刘娜,童小念.数字图像边缘检测的Java 实现[J].电脑知识与技术,2007(7):235-236.
[3]毕文杰,李慎江.DICOM 医学影像文件格式与常见格式的转换[J].医疗卫生装备,2008(10):154-156.
[4]张德成,孙莉.基于Java 的医学图像数据接口[J].信息技术,2008(3):115-117.
[5]康晓东.医学影像图像处理[M].北京:人民卫生出版社,2009.
【通联编辑:朱宝贵】
99。

相关文档
最新文档