package ip.gui.frames;
import java.awt.*;
import java.awt.event.ActionEvent;
public class MorphFrame extends EdgeFrame {
private Menu morphMenu = getMenu("Morph");
private Menu morphEdgeMenu = getMenu("Edge");
private Menu dilateMenu = getMenu("Dilate");
private Menu erodeMenu = getMenu("Erode");
private Menu openMorphMenu = getMenu("Open");
private Menu closeMorphMenu = getMenu("Close");
private Menu insideContourMenu = getMenu("Inside Contour");
private Menu outsideContourMenu = getMenu("Outside Contour");
private Menu middleContourMenu = getMenu("Middle Contour");
private Menu serraMenu = getMenu("Serra Transform (experimental)");
private Menu morphColorMenu = getMenu("Color (experimental)");
private MenuItem dilateh_mi = addMenuItem(dilateMenu, "h");
private MenuItem dilatev_mi = addMenuItem(dilateMenu, "v");
private MenuItem dilateSquare_mi = addMenuItem(dilateMenu, "square");
private MenuItem dilateCross_mi = addMenuItem(dilateMenu, "cross");
private MenuItem erodeh_mi = addMenuItem(erodeMenu, "h");
private MenuItem erodeh5_mi = addMenuItem(erodeMenu, "hx5");
private MenuItem erodev_mi = addMenuItem(erodeMenu, "v");
private MenuItem erodeSquare_mi = addMenuItem(erodeMenu, "square");
private MenuItem erodeCross_mi = addMenuItem(erodeMenu, "cross");
private MenuItem openh_mi = addMenuItem(openMorphMenu, "h");
private MenuItem openv_mi = addMenuItem(openMorphMenu, "v");
private MenuItem openSquare_mi = addMenuItem(openMorphMenu, "square");
private MenuItem openCross_mi = addMenuItem(openMorphMenu, "cross");
private MenuItem closeh_mi = addMenuItem(closeMorphMenu, "h");
private MenuItem closev_mi = addMenuItem(closeMorphMenu, "v");
private MenuItem closeSquare_mi = addMenuItem(closeMorphMenu, "square");
private MenuItem closeCross_mi = addMenuItem(closeMorphMenu, "cross");
private MenuItem insideContourh_mi = addMenuItem(insideContourMenu, "h");
private MenuItem insideContourv_mi = addMenuItem(insideContourMenu, "v");
private MenuItem insideContourSquare_mi = addMenuItem(insideContourMenu, "square");
private MenuItem insideContourCross_mi = addMenuItem(insideContourMenu, "cross");
private MenuItem outsideContourh_mi = addMenuItem(outsideContourMenu, "h");
private MenuItem outsideContourv_mi = addMenuItem(outsideContourMenu, "v");
private MenuItem outsideContourSquare_mi = addMenuItem(outsideContourMenu, "square");
private MenuItem outsideContourCross_mi =
addMenuItem(outsideContourMenu, "[x]cross");
private MenuItem middleContourh_mi = addMenuItem(middleContourMenu, "h");
private MenuItem middleContourv_mi = addMenuItem(middleContourMenu, "v");
private MenuItem middleContourSquare_mi = addMenuItem(middleContourMenu, "square");
private MenuItem middleContourCross_mi = addMenuItem(middleContourMenu, "cross");
private MenuItem serrah_mi = addMenuItem(serraMenu, "h");
private MenuItem serrav_mi = addMenuItem(serraMenu, "v");
private MenuItem serraSquare_mi = addMenuItem(serraMenu, "square");
private MenuItem serraCross_mi = addMenuItem(serraMenu, "cross");
private MenuItem skeleton_mi = addMenuItem(morphEdgeMenu, "[s]keleton");
private MenuItem thin_mi = addMenuItem(morphEdgeMenu, "[t]hin");
private MenuItem hatMorph_mi = addMenuItem(morphEdgeMenu, "hat Morph");
private MenuItem colorDilateErode_mi = addMenuItem(morphColorMenu, "[E-c]olor Dilate-Erode");
private MenuItem colorDilate_mi = addMenuItem(morphColorMenu, "[E-d]color Dilate");
private MenuItem colorErode_mi = addMenuItem(morphColorMenu, "[E-e]color Erode");
private MenuItem colorOpen_mi = addMenuItem(morphColorMenu, "color open");
private MenuItem colorClose_mi = addMenuItem(morphColorMenu, "color close");
private MenuItem colorPyramid_mi = addMenuItem(morphColorMenu, "[p]yramid");
public void actionPerformed(ActionEvent e) {
if (match(e, thin_mi)) {
thin();
return;
}
if (match(e, colorPyramid_mi)) {
colorPyramid(kSquare);
return;
}
if (match(e, colorOpen_mi)) {
colorOpen(kSquare);
return;
}
if (match(e, colorClose_mi)) {
colorClose(kSquare);
return;
}
if (match(e, serraSquare_mi)) {
serra(kSquare);
return;
}
if (match(e, serrah_mi)) {
serra(kh);
return;
}
if (match(e, serrav_mi)) {
serra(kv);
return;
}
if (match(e, serraCross_mi)) {
serra(kCross);
return;
}
if (match(e, colorErode_mi)) {
colorErode(kSquare);
return;
}
if (match(e, colorDilate_mi)) {
colorDilate(kSquare);
return;
}
if (match(e, colorDilateErode_mi)) {
colorDilateErode(kSquare);
return;
}
if (match(e, skeleton_mi)) {
skeleton();
return;
}
if (match(e, hatMorph_mi)) {
hat13v2();
thresh();
insideContour(kh);
return;
}
if (match(e, middleContourh_mi)) {
middleContour(kh);
return;
}
if (match(e, middleContourv_mi)) {
middleContour(kv);
return;
}
if (match(e, middleContourSquare_mi)) {
middleContour(kSquare);
return;
}
if (match(e, middleContourCross_mi)) {
middleContour(kCross);
return;
}
if (match(e, insideContourh_mi)) {
insideContour(kh);
return;
}
if (match(e, insideContourv_mi)) {
insideContour(kv);
return;
}
if (match(e, insideContourSquare_mi)) {
insideContour(kSquare);
return;
}
if (match(e, insideContourCross_mi)) {
insideContour(kCross);
return;
}
if (match(e, outsideContourh_mi)) {
outsideContour(kh);
return;
}
if (match(e, outsideContourv_mi)) {
outsideContour(kv);
return;
}
if (match(e, outsideContourSquare_mi)) {
outsideContour(kSquare);
return;
}
if (match(e, outsideContourCross_mi)) {
outsideContour(kCross);
return;
}
if (match(e, openh_mi)) {
open(kh);
return;
}
if (match(e, openv_mi)) {
open(kv);
return;
}
if (match(e, openSquare_mi)) {
open(kSquare);
return;
}
if (match(e, openCross_mi)) {
open(kCross);
return;
}
if (match(e, closeh_mi)) {
close(kh);
return;
}
if (match(e, closev_mi)) {
close(kv);
return;
}
if (match(e, closeSquare_mi)) {
close(kSquare);
return;
}
if (match(e, closeCross_mi)) {
close(kCross);
return;
}
if (match(e, erodeCross_mi)) {
erode(kCross);
return;
}
if (match(e, erodeSquare_mi)) {
erode(kSquare);
return;
}
if (match(e, erodeh5_mi)) {
erode(kh);
erode(kh);
erode(kh);
erode(kh);
erode(kh);
return;
}
if (match(e, erodeh_mi)) {
erode(kh);
return;
}
if (match(e, erodev_mi)) {
erode(kv);
return;
}
if (match(e, dilateCross_mi)) {
dilate(kCross);
return;
}
if (match(e, dilateSquare_mi)) {
dilate(kSquare);
return;
}
if (match(e, dilateh_mi)) {
dilate(kh);
return;
}
if (match(e, dilatev_mi)) {
dilate(kv);
return;
}
super.actionPerformed(e);
}
public void colorPyramid(float k[][]) {
setR(dilategs(erodegs(getR(), k), k));
setG(dilategs(erodegs(getG(), k), k));
setB(dilategs(erodegs(getB(), k), k));
setR(erodegs(dilategs(getR(), k), k));
setG(erodegs(dilategs(getG(), k), k));
setB(erodegs(dilategs(getB(), k), k));
resample(2);
short2Image();
}
public void resample2(int ratio) {
child = new MorphFrame("MorphFrame");
ImageFrameInterface frame = getChild();
int width1 = getImageWidth() / 2;
frame.setImageWidth(width1);
ImageFrameInterface frame1 = getChild();
int height1 = getImageHeight() / 2;
frame1.setImageHeight(height1);
getChild().setR(resampleArray(getR(), 2));
getChild().setG(resampleArray(getG(), 2));
getChild().setB(resampleArray(getB(), 2));
}
public void resample(int ratio) {
int width1 = getImageWidth() / 2;
setImageWidth(width1);
int height1 = getImageHeight() / 2;
setImageHeight(height1);
setR(resampleArray(getR(), 2));
setG(resampleArray(getG(), 2));
setB(resampleArray(getB(), 2));
}
public short[][] resampleArray(short a[][], int ratio) {
int w = a.length;
int h = a[0].length;
int nw = w / ratio;
int nh = h / ratio;
short c[][] = new short[nw][nh];
for (int i = 0; i < w; i++)
for (int j = 0; j < h; j++)
c[i / ratio][j / ratio] = a[i][j];
return c;
}
public void colorOpen(float k[][]) {
setR(dilategs(erodegs(getR(), k), k));
setG(dilategs(erodegs(getG(), k), k));
setB(dilategs(erodegs(getB(), k), k));
short2Image();
}
public void colorClose(float k[][]) {
setR(erodegs(dilategs(getR(), k), k));
setG(erodegs(dilategs(getG(), k), k));
setB(erodegs(dilategs(getB(), k), k));
short2Image();
}
public void open(float k[][]) {
setR(dilate(erode(getR(), k), k));
copyRedToGreenAndBlue();
short2Image();
}
public void close(float k[][]) {
setR(erode(dilate(getR(), k), k));
copyRedToGreenAndBlue();
short2Image();
}
public void serra(float k[][]) {
setR(erode(getR(), k));
setG(erode(complement(getG()), kSquare));
setR(intersect(getR(), getG()));
copyRedToGreenAndBlue();
short2Image();
}
public short[][] intersect(short a[][], short b[][]) {
int w = a.length;
int h = a[0].length;
short c[][] = new short[w][h];
for (int x = 0; x < w; x++)
for (int y = 0; y < h; y++)
if (a[x][y] == b[x][y])
c[x][y] = a[x][y];
return c;
}
public short[][] complement(short s[][]) {
int w = s.length;
int h = s[0].length;
short sComp[][] = new short[w][h];
for (int x = 0; x < w; x++)
for (int y = 0; y < h; y++)
sComp[x][y] = (short) (255 - s[x][y]);
return sComp;
}
public static void main(String args[]) {
MorphFrame ef = new MorphFrame("MorphFrame");
ef.show();
}
public void dilate(float k[][]) {
setR(dilate(getG(), k));
copyRedToGreenAndBlue();
short2Image();
}
public void erode(float k[][]) {
setR(erode(getG(), k));
copyRedToGreenAndBlue();
short2Image();
}
public void colorDilateErode(float k[][]) {
for (int i = 0; i < 5; i++)
colorDilate(k);
for (int i = 0; i < 5; i++)
colorErode(k);
}
public void colorDilate(float k[][]) {
setR(dilategs(getR(), k));
setG(dilategs(getG(), k));
setB(dilategs(getB(), k));
short2Image();
}
public void colorErode(float k[][]) {
setR(erodegs(getR(), k));
setG(erodegs(getG(), k));
setB(erodegs(getB(), k));
short2Image();
}
public void insideContour(float k[][]) {
setR(subtract(getG(), erode(getG(), k)));
copyRedToGreenAndBlue();
short2Image();
}
public void outsideContour(float k[][]) {
setR(subtract(dilate(getG(), k), getG()));
copyRedToGreenAndBlue();
short2Image();
}
public void middleContour(float k[][]) {
setR(subtract(
dilate(getG(), k),
erode(getG(), k)));
copyRedToGreenAndBlue();
short2Image();
}
public void clip(short a[][], short min, short max) {
int w = a.length;
int h = a[0].length;
for (int x = 0; x < w; x++)
for (int y = 0; y < h; y++) {
if (a[x][y] < min) a[x][y] = min;
if (a[x][y] > max) a[x][y] = max;
}
}
public short[][] subtract(
short a[][], short b[][]) {
int w = a.length;
int h = a[0].length;
short c[][] = new short[w][h];
for (int x = 0; x < w; x++)
for (int y = 0; y < h; y++) {
int s = a[x][y] - b[x][y];
c[x][y] = (short) Math.abs(s);
}
return c;
}
public void thin() {
skeletonRedPassSuen(true);
skeletonRedPassSuen(false);
copyRedToGreenAndBlue();
short2Image();
}
public void skeleton() {
while (
skeletonRedPassSuen(true) &&
skeletonRedPassSuen(false)) {
}
copyRedToGreenAndBlue();
short2Image();
}
public boolean skeletonRedPassSuen(
boolean firstPass) {
boolean p[] = new boolean[8];
short c = 0;
for (int x = 1; x < getImageWidth() - 1; x++) {
for (int y = 1; y < getImageHeight() - 1; y++) {
getG()[x][y] = 0; if (getR()[x][y] == 0) continue;
p[0] = getR()[x][y + 1] != 0;
p[1] = getR()[x + 1][y + 1] != 0;
p[2] = getR()[x + 1][y] != 0;
p[3] = getR()[x + 1][y - 1] != 0;
p[4] = getR()[x][y - 1] != 0;
p[5] = getR()[x - 1][y - 1] != 0;
p[6] = getR()[x - 1][y] != 0;
p[7] = getR()[x - 1][y + 1] != 0;
int n = numberOfNeighbors(p);
if ((n < 2) || (n > 6)) continue;
if (numberOf01Transitions(p) != 1) continue;
if (firstPass) {
if ((p[0] && p[2] && p[4]))
continue;
if ((p[2] && p[4] && p[6]))
continue;
getG()[x][y] = 255;
c++;
} else {
if ((p[0] && p[2] && p[6]))
continue;
if ((p[0] && p[4] && p[6]))
continue;
getG()[x][y] = 255;
c++;
}
}
}
if (c == 0) return false;
deleteFlagedPoints();
return true;
}
public void deleteFlagedPoints() {
for (int x = 1; x < getImageWidth() - 1; x++)
for (int y = 1; y < getImageHeight() - 1; y++)
if (getG()[x][y] != 0)
getR()[x][y] = 0;
}
public short[][] erode(short f[][], float k[][]) {
int uc = k.length / 2;
int vc = k[0].length / 2;
short h[][] = new short[getImageWidth()][getImageHeight()];
short sum = 0;
for (int x = uc; x < getImageWidth() - uc; x++) {
for (int y = vc; y < getImageHeight() - vc; y++) {
sum = 255;
for (int v = -vc; v <= vc; v++)
for (int u = -uc; u <= uc; u++)
if (k[u + uc][v + vc] == 1)
if (f[x - u][y - v] < sum)
sum = f[x - u][y - v];
h[x][y] = sum;
}
}
return h;
}
public short[][] erodegs(short f[][], float k[][]) {
int uc = k.length / 2;
int vc = k[0].length / 2;
short h[][] = new short[getImageWidth()][getImageHeight()];
short min = 0;
short sum = 0;
for (int x = uc; x < getImageWidth() - uc; x++) {
for (int y = vc; y < getImageHeight() - vc; y++) {
min = 255;
sum = 0;
for (int v = -vc; v <= vc; v++)
for (int u = -uc; u <= uc; u++)
if (k[u + uc][v + vc] == 1) {
sum = f[x - u][y - v];
if (sum < min)
min = sum;
}
h[x][y] = min;
}
}
return h;
}
public short[][] dilategs(short f[][], float k[][]) {
int uc = k.length / 2;
int vc = k[0].length / 2;
short h[][] = new short[getImageWidth()][getImageHeight()];
short max = 0;
short sum = 0;
for (int x = uc; x < getImageWidth() - uc; x++) {
for (int y = vc; y < getImageHeight() - vc; y++) {
max = 0;
sum = 0;
for (int v = -vc; v <= vc; v++)
for (int u = -uc; u <= uc; u++)
if (k[u + uc][v + vc] == 1) {
sum = f[x - u][y - v];
if (sum > max)
max = sum;
}
h[x][y] = max;
}
}
return h;
}
public short[][] dilate(short f[][], float k[][]) {
int uc = k.length / 2;
int vc = k[0].length / 2;
short h[][] = new short[getImageWidth()][getImageHeight()];
short sum;
for (int x = uc; x < getImageWidth() - uc; x++) {
for (int y = vc; y < getImageHeight() - vc; y++) {
sum = 0;
for (int v = -vc; v <= vc; v++)
for (int u = -uc; u <= uc; u++)
if (k[u + uc][v + vc] == 1)
if (f[x - u][y - v] > sum)
sum = f[x - u][y - v];
h[x][y] = sum;
}
}
return h;
}
MorphFrame(String title) {
super(title);
morphMenu.add(erodeMenu);
morphMenu.add(dilateMenu);
morphMenu.add(openMorphMenu);
morphMenu.add(closeMorphMenu);
morphMenu.add(insideContourMenu);
morphMenu.add(middleContourMenu);
morphMenu.add(outsideContourMenu);
morphMenu.add(morphEdgeMenu);
morphMenu.add(morphColorMenu);
morphMenu.add(serraMenu);
getSpatialFilterMenu().add(morphMenu);
}
private static final
float kv[][] = {
{0, 1, 0},
{0, 1, 0},
{0, 1, 0}
};
private static final
float kh[][] = {
{0, 0, 0},
{1, 1, 1},
{0, 0, 0}
};
private static final
float kCross[][] = {
{0, 1, 0},
{1, 1, 1},
{0, 1, 0}
};
private static final
float kSquare[][] = {
{1, 1, 1},
{1, 1, 1},
{1, 1, 1}
};
private static final
float kThinTop[][] = {
{0, 1, 0},
{1, 1, 1},
{0, 0, 0}
};
private static final
float kThinBottom[][] = {
{0, 0, 0},
{1, 1, 1},
{0, 1, 0}
};
private static final
float kOutline[][] = {
{0, 1, 1, 1, 0},
{1, 1, 1, 1, 1},
{1, 1, 1, 1, 1},
{1, 1, 1, 1, 1},
{0, 1, 1, 1, 0}
};
public int numberOfNeighbors(boolean p[]) {
int n = 0;
if (p[0]) n++;
if (p[1]) n++;
if (p[2]) n++;
if (p[3]) n++;
if (p[4]) n++;
if (p[5]) n++;
if (p[6]) n++;
if (p[7]) n++;
return n;
}
private int numberOf01Transitions(boolean p[]) {
int n = 0;
if ((!p[0]) && p[1]) n++;
if ((!p[1]) && p[2]) n++;
if ((!p[2]) && p[3]) n++;
if ((!p[3]) && p[4]) n++;
if ((!p[4]) && p[5]) n++;
if ((!p[5]) && p[6]) n++;
if ((!p[6]) && p[7]) n++;
if ((!p[7]) && p[0]) n++;
return n;
}
public Menu getMorphMenu() {
return morphMenu;
}
public void setMorphMenu(Menu morphMenu) {
this.morphMenu = morphMenu;
}
public Menu getMorphEdgeMenu() {
return morphEdgeMenu;
}
public void setMorphEdgeMenu(Menu morphEdgeMenu) {
this.morphEdgeMenu = morphEdgeMenu;
}
public Menu getDilateMenu() {
return dilateMenu;
}
public void setDilateMenu(Menu dilateMenu) {
this.dilateMenu = dilateMenu;
}
public Menu getErodeMenu() {
return erodeMenu;
}
public void setErodeMenu(Menu erodeMenu) {
this.erodeMenu = erodeMenu;
}
public Menu getOpenMorphMenu() {
return openMorphMenu;
}
public void setOpenMorphMenu(Menu openMorphMenu) {
this.openMorphMenu = openMorphMenu;
}
public Menu getCloseMorphMenu() {
return closeMorphMenu;
}
public void setCloseMorphMenu(Menu closeMorphMenu) {
this.closeMorphMenu = closeMorphMenu;
}
public Menu getInsideContourMenu() {
return insideContourMenu;
}
public void setInsideContourMenu(Menu insideContourMenu) {
this.insideContourMenu = insideContourMenu;
}
public Menu getOutsideContourMenu() {
return outsideContourMenu;
}
public void setOutsideContourMenu(Menu outsideContourMenu) {
this.outsideContourMenu = outsideContourMenu;
}
public Menu getMiddleContourMenu() {
return middleContourMenu;
}
public void setMiddleContourMenu(Menu middleContourMenu) {
this.middleContourMenu = middleContourMenu;
}
public Menu getSerraMenu() {
return serraMenu;
}
public void setSerraMenu(Menu serraMenu) {
this.serraMenu = serraMenu;
}
public Menu getMorphColorMenu() {
return morphColorMenu;
}
public void setMorphColorMenu(Menu morphColorMenu) {
this.morphColorMenu = morphColorMenu;
}
public MenuItem getDilateh_mi() {
return dilateh_mi;
}
public void setDilateh_mi(MenuItem dilateh_mi) {
this.dilateh_mi = dilateh_mi;
}
public MenuItem getDilatev_mi() {
return dilatev_mi;
}
public void setDilatev_mi(MenuItem dilatev_mi) {
this.dilatev_mi = dilatev_mi;
}
public MenuItem getDilateSquare_mi() {
return dilateSquare_mi;
}
public void setDilateSquare_mi(MenuItem dilateSquare_mi) {
this.dilateSquare_mi = dilateSquare_mi;
}
public MenuItem getDilateCross_mi() {
return dilateCross_mi;
}
public void setDilateCross_mi(MenuItem dilateCross_mi) {
this.dilateCross_mi = dilateCross_mi;
}
public MenuItem getErodeh_mi() {
return erodeh_mi;
}
public void setErodeh_mi(MenuItem erodeh_mi) {
this.erodeh_mi = erodeh_mi;
}
public MenuItem getErodeh5_mi() {
return erodeh5_mi;
}
public void setErodeh5_mi(MenuItem erodeh5_mi) {
this.erodeh5_mi = erodeh5_mi;
}
public MenuItem getErodev_mi() {
return erodev_mi;
}
public void setErodev_mi(MenuItem erodev_mi) {
this.erodev_mi = erodev_mi;
}
public MenuItem getErodeSquare_mi() {
return erodeSquare_mi;
}
public void setErodeSquare_mi(MenuItem erodeSquare_mi) {
this.erodeSquare_mi = erodeSquare_mi;
}
public MenuItem getErodeCross_mi() {
return erodeCross_mi;
}
public void setErodeCross_mi(MenuItem erodeCross_mi) {
this.erodeCross_mi = erodeCross_mi;
}
public MenuItem getOpenh_mi() {
return openh_mi;
}
public void setOpenh_mi(MenuItem openh_mi) {
this.openh_mi = openh_mi;
}
public MenuItem getOpenv_mi() {
return openv_mi;
}
public void setOpenv_mi(MenuItem openv_mi) {
this.openv_mi = openv_mi;
}
public MenuItem getOpenSquare_mi() {
return openSquare_mi;
}
public void setOpenSquare_mi(MenuItem openSquare_mi) {
this.openSquare_mi = openSquare_mi;
}
public MenuItem getOpenCross_mi() {
return openCross_mi;
}
public void setOpenCross_mi(MenuItem openCross_mi) {
this.openCross_mi = openCross_mi;
}
public MenuItem getCloseh_mi() {
return closeh_mi;
}
public void setCloseh_mi(MenuItem closeh_mi) {
this.closeh_mi = closeh_mi;
}
public MenuItem getClosev_mi() {
return closev_mi;
}
public void setClosev_mi(MenuItem closev_mi) {
this.closev_mi = closev_mi;
}
public MenuItem getCloseSquare_mi() {
return closeSquare_mi;
}
public void setCloseSquare_mi(MenuItem closeSquare_mi) {
this.closeSquare_mi = closeSquare_mi;
}
public MenuItem getCloseCross_mi() {
return closeCross_mi;
}
public void setCloseCross_mi(MenuItem closeCross_mi) {
this.closeCross_mi = closeCross_mi;
}
public MenuItem getInsideContourh_mi() {
return insideContourh_mi;
}
public void setInsideContourh_mi(MenuItem insideContourh_mi) {
this.insideContourh_mi = insideContourh_mi;
}
public MenuItem getInsideContourv_mi() {
return insideContourv_mi;
}
public void setInsideContourv_mi(MenuItem insideContourv_mi) {
this.insideContourv_mi = insideContourv_mi;
}
public MenuItem getInsideContourSquare_mi() {
return insideContourSquare_mi;
}
public void setInsideContourSquare_mi(MenuItem insideContourSquare_mi) {
this.insideContourSquare_mi = insideContourSquare_mi;
}
public MenuItem getInsideContourCross_mi() {
return insideContourCross_mi;
}
public void setInsideContourCross_mi(MenuItem insideContourCross_mi) {
this.insideContourCross_mi = insideContourCross_mi;
}
public MenuItem getOutsideContourh_mi() {
return outsideContourh_mi;
}
public void setOutsideContourh_mi(MenuItem outsideContourh_mi) {
this.outsideContourh_mi = outsideContourh_mi;
}
public MenuItem getOutsideContourv_mi() {
return outsideContourv_mi;
}
public void setOutsideContourv_mi(MenuItem outsideContourv_mi) {
this.outsideContourv_mi = outsideContourv_mi;
}
public MenuItem getOutsideContourSquare_mi() {
return outsideContourSquare_mi;
}
public void setOutsideContourSquare_mi(MenuItem outsideContourSquare_mi) {
this.outsideContourSquare_mi = outsideContourSquare_mi;
}
public MenuItem getOutsideContourCross_mi() {
return outsideContourCross_mi;
}
public void setOutsideContourCross_mi(MenuItem outsideContourCross_mi) {
this.outsideContourCross_mi = outsideContourCross_mi;
}
public MenuItem getMiddleContourh_mi() {
return middleContourh_mi;
}
public void setMiddleContourh_mi(MenuItem middleContourh_mi) {
this.middleContourh_mi = middleContourh_mi;
}
public MenuItem getMiddleContourv_mi() {
return middleContourv_mi;
}
public void setMiddleContourv_mi(MenuItem middleContourv_mi) {
this.middleContourv_mi = middleContourv_mi;
}
public MenuItem getMiddleContourSquare_mi() {
return middleContourSquare_mi;
}
public void setMiddleContourSquare_mi(MenuItem middleContourSquare_mi) {
this.middleContourSquare_mi = middleContourSquare_mi;
}
public MenuItem getMiddleContourCross_mi() {
return middleContourCross_mi;
}
public void setMiddleContourCross_mi(MenuItem middleContourCross_mi) {
this.middleContourCross_mi = middleContourCross_mi;
}
public MenuItem getSerrah_mi() {
return serrah_mi;
}
public void setSerrah_mi(MenuItem serrah_mi) {
this.serrah_mi = serrah_mi;
}
public MenuItem getSerrav_mi() {
return serrav_mi;
}
public void setSerrav_mi(MenuItem serrav_mi) {
this.serrav_mi = serrav_mi;
}
public MenuItem getSerraSquare_mi() {
return serraSquare_mi;
}
public void setSerraSquare_mi(MenuItem serraSquare_mi) {
this.serraSquare_mi = serraSquare_mi;
}
public MenuItem getSerraCross_mi() {
return serraCross_mi;
}
public void setSerraCross_mi(MenuItem serraCross_mi) {
this.serraCross_mi = serraCross_mi;
}
public MenuItem getSkeleton_mi() {
return skeleton_mi;
}
public void setSkeleton_mi(MenuItem skeleton_mi) {
this.skeleton_mi = skeleton_mi;
}
public MenuItem getThin_mi() {
return thin_mi;
}
public void setThin_mi(MenuItem thin_mi) {
this.thin_mi = thin_mi;
}
public MenuItem getHatMorph_mi() {
return hatMorph_mi;
}
public void setHatMorph_mi(MenuItem hatMorph_mi) {
this.hatMorph_mi = hatMorph_mi;
}
public MenuItem getColorDilateErode_mi() {
return colorDilateErode_mi;
}
public void setColorDilateErode_mi(MenuItem colorDilateErode_mi) {
this.colorDilateErode_mi = colorDilateErode_mi;
}
public MenuItem getColorDilate_mi() {
return colorDilate_mi;
}
public void setColorDilate_mi(MenuItem colorDilate_mi) {
this.colorDilate_mi = colorDilate_mi;
}
public MenuItem getColorErode_mi() {
return colorErode_mi;
}
public void setColorErode_mi(MenuItem colorErode_mi) {
this.colorErode_mi = colorErode_mi;
}
public MenuItem getColorOpen_mi() {
return colorOpen_mi;
}
public void setColorOpen_mi(MenuItem colorOpen_mi) {
this.colorOpen_mi = colorOpen_mi;
}
public MenuItem getColorClose_mi() {
return colorClose_mi;
}
public void setColorClose_mi(MenuItem colorClose_mi) {
this.colorClose_mi = colorClose_mi;
}
public MenuItem getColorPyramid_mi() {
return colorPyramid_mi;
}
public void setColorPyramid_mi(MenuItem colorPyramid_mi) {
this.colorPyramid_mi = colorPyramid_mi;
}
public static float[][] getKv() {
return kv;
}
public static float[][] getKh() {
return kh;
}
public static float[][] getKcross() {
return kCross;
}
public static float[][] getKsquare() {
return kSquare;
}
public static float[][] getKthintop() {
return kThinTop;
}
public static float[][] getKthinbottom() {
return kThinBottom;
}
public static float[][] getKoutline() {
return kOutline;
}
}