• 大小: 11.52MB
    文件类型: .zip
    金币: 1
    下载: 0 次
    发布日期: 2023-07-29
  • 语言: Java
  • 标签: 抠图  算法  Bayes  Java  

资源简介

Java版的Bayes自然图像抠图,其中包括了一个Matrix矩阵类,除了基本运算外,还实现了求逆、特征向量、特征值、线性方程组求解。

资源截图

代码片段和文件信息

package hicamp.image.matting.bayes;

import hicamp.image.matting.matrix.Matrix;

import java.util.linkedList;
import java.util.List;
import java.util.ArrayList;
import java.awt.Point;

public class BayesMatting {
// falg
public static final double BACK = 0.0;
public static final double FORE = 2.0;
public static final double UN = 4.0;

// constructor
public BayesMatting(Matrix source Matrix t) {
S = source;
r = c = 0;// 行列
init();
setParameter();
initMask(t);
}
// execute image matting
public void exec() {
List list;
// the main procession
do {
list = Contour.getContour(uSolveMask);

for (int i = 0; i < list.size(); ++i) {
r = list.get(i).x;
c = list.get(i).y;
solve();
}
} while (!list.isEmpty());
}
// get foreground
public Matrix getFore() {
return F;
}
// get background
public Matrix getBack() {
return B;
}
// get trimap
public Matrix getTrimap() {
return alpha;
}
// premalloc memory
private void init() {
fg_set = new linkedList();
bg_set = new linkedList();
fg_w = new linkedList();
bg_w = new linkedList();
}
// init data
private void initMask(Matrix t) {
int r = t.getRow();
int l = t.getCol();
//
F = new Matrix(r * 3 l);
B = new Matrix(r * 3 l);
alpha = new Matrix(r l);

fMask = new Matrix(r l);
bMask = new Matrix(r l);
uMask = new Matrix(r l);
uSolveMask = new Matrix(r l);
// init fmask
for (int i = 0; i < r; ++i) {
for (int j = 0; j < l; ++j) {
for (int k = 0; k < 3; ++k) {
F.setElem(i * 3 + k j 0);
B.setElem(i * 3 + k j 0);
}
{
alpha.setElem(i j 0);
fMask.setElem(i j 0);
bMask.setElem(i j 0);
uMask.setElem(i j 0);
uSolveMask.setElem(i j 0);
}
//
if (t.getElem(i j) == BACK) {
bMask.setElem(i j 1);
for (int k = 0; k < 3; ++k) {
B.setElem(i * 3 + k j S.getElem(i * 3 + k j));
}
} else if (t.getElem(i j) == FORE) {
alpha.setElem(i j 1);
fMask.setElem(i j 1);
for (int k = 0; k < 3; ++k) {
F.setElem(i * 3 + k j S.getElem(i * 3 + k j));
}
} else {
uSolveMask.setElem(i j 1);
uMask.setElem(i j 1);
}
}
}
}
// init parameter
private void setParameter() {
sigma = 8.0f;
sigmac = 0.01f;
}
// threshold
private int minSize = 10;
private int nSize = 50;
private double minVar = 1e-6;
//solve
private void solve() {
// get sample set
collectSampleSet();
// if set of sample if not enough
if (fg_set.size() < minSize || bg_set.size() < minSize)
return;

//******************************
//System.out.println(r+““+c);
//******************************
List fInvCov = new ArrayList();
List fMean = new ArrayList();
List bInvCov = new ArrayList();
List bMean = new ArrayList();
// cluster
BayesMatting_Cluster.cluster(fg_set fg_w fMean fInvCov);
BayesM

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     目录           0  2014-04-20 09:44  BayesMatting\
     文件         302  2013-11-01 13:46  BayesMatting\.classpath
     文件         388  2014-04-12 16:10  BayesMatting\.project
     文件         162  2013-12-10 12:21  BayesMatting\.reverse.properties
     目录           0  2013-10-31 18:21  BayesMatting\.settings\
     文件         176  2013-10-11 21:23  BayesMatting\.settings\org.eclipse.core.resources.prefs
     文件         629  2013-10-03 20:12  BayesMatting\.settings\org.eclipse.jdt.core.prefs
     文件      593482  2013-12-02 07:47  BayesMatting\111.png
     文件      593482  2013-12-02 09:11  BayesMatting\333
     文件       15759  2013-12-10 12:54  BayesMatting\a.uml
     文件       17378  2013-12-10 12:54  BayesMatting\a.umldi
     文件      131732  2013-11-23 13:15  BayesMatting\aa.uml
     文件       97365  2013-11-23 13:15  BayesMatting\aa.umldi
     文件      437899  2013-11-01 13:59  BayesMatting\bear_mix.png
     目录           0  2014-04-12 16:10  BayesMatting\bin\
     目录           0  2014-04-12 16:10  BayesMatting\bin\hicamp\
     目录           0  2014-04-12 16:10  BayesMatting\bin\hicamp\image\
     目录           0  2014-04-12 16:10  BayesMatting\bin\hicamp\image\matting\
     目录           0  2014-04-12 16:10  BayesMatting\bin\hicamp\image\matting\bayes\
     文件       10397  2014-04-20 10:39  BayesMatting\bin\hicamp\image\matting\bayes\BayesMatting.class
     文件        1760  2014-04-12 16:10  BayesMatting\bin\hicamp\image\matting\bayes\BayesMatting_Cluster.class
     文件        1937  2014-04-12 16:10  BayesMatting\bin\hicamp\image\matting\bayes\Contour.class
     文件        4298  2014-04-12 16:10  BayesMatting\bin\hicamp\image\matting\bayes\ImageToMatrix.class
     目录           0  2014-04-12 16:10  BayesMatting\bin\hicamp\image\matting\cluster\
     文件        2893  2014-04-12 16:10  BayesMatting\bin\hicamp\image\matting\cluster\Cluster.class
     文件        3787  2014-04-12 16:10  BayesMatting\bin\hicamp\image\matting\cluster\Node.class
     目录           0  2014-04-12 16:10  BayesMatting\bin\hicamp\image\matting\gui\
     文件        5145  2014-04-12 16:10  BayesMatting\bin\hicamp\image\matting\gui\JMyPanel.class
     文件        1073  2014-04-12 16:10  BayesMatting\bin\hicamp\image\matting\gui\Main.class
     文件         826  2014-04-12 16:10  BayesMatting\bin\hicamp\image\matting\gui\Menu$1.class
     文件         921  2014-04-12 16:10  BayesMatting\bin\hicamp\image\matting\gui\Menu$ProgressBar.class
............此处省略118个文件信息

评论

共有 条评论