基于谱聚类的图像分割
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
本科生毕业设计
姓名:学号:
学院:计算机科学与技术学院
专业:计算机科学与技术
设计题目:基于谱聚类的图像分割
专题:图像分割的设计与实现
指导教师:职称:副教授
大学毕业设计任务书
学院计算机专业年级学生姓名
任务下达日期:
毕业设计日期:
毕业设计题目:
毕业设计专题题目
毕业设计主要内容和要求:
院长签章:指导教师签字:
中国矿业大学毕业设计指导教师评阅书
指导教师评语(①基础理论及基本技能的掌握;②独立解决实际问题的能力;③研究内容的理论依据和技术方法;④取得的主要成果及创新点;⑤工作态度及工作量;⑥总体评价及建议成绩;⑦存在问题;⑧是否同意答辩等):
成绩:指导教师签字:
年月日
中国矿业大学毕业设计评阅教师评阅书
评阅教师评语(①选题的意义;②基础理论及基本技能的掌握;③综合运用所学知识解决实际问题的能力;③工作量的大小;④取得的主要成果及创新点;⑤写作的规范程度;⑥总体评价及建议成绩;⑦存在问题;⑧是否同意答辩等):
成绩:评阅教师签字:
年月日
中国矿业大学毕业设计答辩及综合成绩
需求分析
一、利用前台,得到一张原始JPG图片;
二、把这张图片传到后台,JAVA通过JRI调用R;
三、利用R调用K-Means的改进算法,实现对这张图片的处理,由于一张图片的
像素值是一个矩阵,可以得到一组关于像素值的数据;
四、把这组像素值进行分类,对各类赋予不同的颜色进行标记,从而区分出需要的
图片信息;
五、把得到的新图片传到前台;
六、前台对进行处理后的图片进行显示,从图像中得到需要的信息,从而实现图像
的分割。
概要设计
模块功能图:
图片:在本系统中所能使用到的图片属性为颜色和大小,颜色对应不同的像素,大小对应图像的像素点形成矩阵的大小;
前台:前台用来接收图片和显示图片;
后台(JA V A):用来接收图片并且调用R来实现对图片的处理;
后台(R):在被调用后,把图片信息转化成数据信息形成矩阵,从而实现对图片信息的处理。
经过上述的处理后,把新生成的图像信息返回,并在前端进行显示,从而实现图像分割。
把图像分割系统划分成二个子系统:接收图片并显示子系统,处理图片子系统。首先从外界得到需要进行分割的图片,通过接收图片并显示子系统把图片进行输入到系统中;然后再把图片输入到处理图片子系统,输入此系统后,把图片信息转化为矩阵,然后利用JA V A调用R,利用R中K-MEANS算法对矩阵信息进行分类获得新的矩阵,最终把矩阵信息转化成图片,实现对图片的处理;最后把处理后得到的新图片输入到显示图片子系统,从而实现图像分割,获得所需要的信息。
详细设计程序流程图:
实现代码;
一.实现图片文件选择器:
package pri.study.convert;
import java.awt.EventQueue;
import javax.swing.ImageIcon;
import javax.swing.JFileChooser;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.File;
import javax.swing.JButton;
import org.rosuda.REngine.REXPMismatchException;
import org.rosuda.REngine.Rserve.RserveException;
public class MyApp implements ActionListener {
private JFrame frame;
JButton selectPrePic = new JButton("选择要转换的图片");
JLabel prePic = new JLabel("New label");
JLabel label = new JLabel("转换前的图片:");
JButton convertPic = new JButton("转换图片");
JLabel label_1 = new JLabel("转换后的图片:");
JLabel label_2 = new JLabel("提示:转换后的图片默认放在转换前图片所在目录下");
JLabel curPic = new JLabel("转化浓厚的图片");
JFileChooser jfc = new JFileChooser();// 文件选择器
private int i=0;
String prePicPath="";
String curPicPath="";
/**
* Create the application.
*/
public MyApp() {
initialize();
}
/**
* Initialize the contents of the frame.
*/
private void initialize() {
jfc.setCurrentDirectory(new File("d://"));// 文件选择器的初始目录定为d盘
frame = new JFrame();
frame.setBounds(200, 150, 880, 400);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JPanel myPanel=new JPanel();
myPanel.setLayout(null);
frame.getContentPane().add(myPanel, BorderLayout.CENTER);
selectPrePic.addActionListener(this);
selectPrePic.setBounds(10, 10, 153, 23);
convertPic.addActionListener(this);
convertPic.setBounds(423, 9, 93, 23);
prePic.setBounds(20, 90, 320, 250);
curPic.setBounds(423, 90, 320, 250);
label.setBounds(20, 42, 139, 15);
label_1.setBounds(423, 42, 143, 15);
label_2.setBounds(423, 65, 320, 15);
myPanel.add(prePic);
myPanel.add(label);
myPanel.add(convertPic);
myPanel.add(label_1);
myPanel.add(label_2);
myPanel.add(curPic);
myPanel.add(selectPrePic);
// ImageIcon ico=new ImageIcon("d:/myPlotPic.png");
// JLabel lblPrepic = new JLabel("hebe",ico,JLabel.CENTER);