OSDN Git Service

Create a new command for edge enhancement before edge detection v2.0.21.p000
authorTakuo Yasunaga <yasunaga@bio.kyutech.ac.jp>
Sun, 22 Jun 2014 15:03:48 +0000 (00:03 +0900)
committerTakuo Yasunaga <yasunaga@bio.kyutech.ac.jp>
Sun, 22 Jun 2014 15:03:48 +0000 (00:03 +0900)
new file:   mrcImageEdgeEnhancement
modified:   lmrcImageEdgeEnhancement.h
modified:   src/Objects/DataManip/mrcImage/src/lmrcImageEdgeEnhancement.c
modified:   src/Objects/DataManip/mrcImage/src/lmrcImageEdgeEnhancement.h
new file:   src/Objects/DataManip/mrcImage/src/lmrcImagePrevitt.c
new file:   src/Objects/DataManip/mrcImage/src/lmrcImageRoberts.c
new file:   src/Objects/DataManip/mrcImage/src/lmrcImageSobel.c
modified:   src/Tools/Config/Define.inc
modified:   src/Tools/mrcImage/mrcImageEdgeEnhancement/*

39 files changed:
bin/mrcImageEdgeEnhancement [new symlink]
hostdepend/X86MAC64/bin/X86MAC64/mrcImageEdgeEnhancement [new file with mode: 0755]
hostdepend/X86MAC64/lib/X86MAC64/libEosObjects.a
hostdepend/X86MAC64/lib/X86MAC64/libmrcImage.a
hostdepend/X86MAC64/lib/X86MAC64/shared/lmrcImageEdgeEnhancement.sharedo
hostdepend/X86MAC64/lib/X86MAC64/shared/lmrcImagePrevitt.sharedo [new file with mode: 0644]
hostdepend/X86MAC64/lib/X86MAC64/shared/lmrcImageRoberts.sharedo [new file with mode: 0644]
hostdepend/X86MAC64/lib/X86MAC64/shared/lmrcImageSobel.sharedo [new file with mode: 0644]
hostdepend/X86MAC64/src/Objects/DataManip/mrcImage/src/X86MAC64/.Depend
hostdepend/X86MAC64/src/Objects/DataManip/mrcImage/src/X86MAC64/.Source
hostdepend/X86MAC64/src/Objects/DataManip/mrcImage/src/X86MAC64/libmrcImage.a
hostdepend/X86MAC64/src/Objects/DataManip/mrcImage/src/X86MAC64/libmrcImage.debug.a
hostdepend/X86MAC64/src/Objects/DataManip/mrcImage/src/X86MAC64/lmrcImageEdgeEnhancement.sharedo
hostdepend/X86MAC64/src/Objects/DataManip/mrcImage/src/X86MAC64/lmrcImagePrevitt.c [new symlink]
hostdepend/X86MAC64/src/Objects/DataManip/mrcImage/src/X86MAC64/lmrcImagePrevitt.sharedo [new file with mode: 0644]
hostdepend/X86MAC64/src/Objects/DataManip/mrcImage/src/X86MAC64/lmrcImageRoberts.c [new symlink]
hostdepend/X86MAC64/src/Objects/DataManip/mrcImage/src/X86MAC64/lmrcImageRoberts.sharedo [new file with mode: 0644]
hostdepend/X86MAC64/src/Objects/DataManip/mrcImage/src/X86MAC64/lmrcImageSobel.c [new symlink]
hostdepend/X86MAC64/src/Objects/DataManip/mrcImage/src/X86MAC64/lmrcImageSobel.sharedo [new file with mode: 0644]
hostdepend/X86MAC64/src/Tools/mrcImage/mrcImageEdgeEnhancement/src/X86MAC64/.Depend
hostdepend/X86MAC64/src/Tools/mrcImage/mrcImageEdgeEnhancement/src/X86MAC64/X86MAC64 [new symlink]
hostdepend/X86MAC64/src/Tools/mrcImage/mrcImageEdgeEnhancement/src/X86MAC64/mrcImageEdgeEnhancement
include/lmrcImageEdgeEnhancement.h
src/Objects/DataManip/mrcImage/src/lmrcImageEdgeEnhancement.c
src/Objects/DataManip/mrcImage/src/lmrcImageEdgeEnhancement.h
src/Objects/DataManip/mrcImage/src/lmrcImagePrevitt.c [new file with mode: 0644]
src/Objects/DataManip/mrcImage/src/lmrcImageRoberts.c [new file with mode: 0644]
src/Objects/DataManip/mrcImage/src/lmrcImageSobel.c [new file with mode: 0644]
src/Tools/Config/Define.inc
src/Tools/mrcImage/mrcImageEdgeEnhancement/Config/OptionControlFile
src/Tools/mrcImage/mrcImageEdgeEnhancement/inc/mrcImageEdgeEnhancement.h
src/Tools/mrcImage/mrcImageEdgeEnhancement/src/argCheck.c
src/Tools/mrcImage/mrcImageEdgeEnhancement/src/init.c
src/Tools/mrcImage/mrcImageEdgeEnhancement/src/mrcImageEdgeEnhancement.c
src/Tools/mrcImage/mrcImageEdgeEnhancement/src/mrcImageEdgeEnhancement.html [new file with mode: 0644]
src/Tools/mrcImage/mrcImageEdgeEnhancement/src/mrcImageEdgeEnhancement.pane
src/Tools/mrcImage/mrcImageEdgeEnhancement/src/test/Makefile [new file with mode: 0644]
src/Tools/mrcImage/mrcImageEdgeEnhancement/src/test/data [new symlink]
src/Tools/mrcImage/mrcImageEdgeEnhancement/src/usage.c

diff --git a/bin/mrcImageEdgeEnhancement b/bin/mrcImageEdgeEnhancement
new file mode 120000 (symlink)
index 0000000..eddb955
--- /dev/null
@@ -0,0 +1 @@
+../sbin/MachineIndependent
\ No newline at end of file
diff --git a/hostdepend/X86MAC64/bin/X86MAC64/mrcImageEdgeEnhancement b/hostdepend/X86MAC64/bin/X86MAC64/mrcImageEdgeEnhancement
new file mode 100755 (executable)
index 0000000..df59094
Binary files /dev/null and b/hostdepend/X86MAC64/bin/X86MAC64/mrcImageEdgeEnhancement differ
index 885cf64..d4aa07c 100644 (file)
Binary files a/hostdepend/X86MAC64/lib/X86MAC64/libEosObjects.a and b/hostdepend/X86MAC64/lib/X86MAC64/libEosObjects.a differ
index 01fe72c..d8c6e64 100644 (file)
Binary files a/hostdepend/X86MAC64/lib/X86MAC64/libmrcImage.a and b/hostdepend/X86MAC64/lib/X86MAC64/libmrcImage.a differ
index 84ddbc2..9bf83ab 100644 (file)
Binary files a/hostdepend/X86MAC64/lib/X86MAC64/shared/lmrcImageEdgeEnhancement.sharedo and b/hostdepend/X86MAC64/lib/X86MAC64/shared/lmrcImageEdgeEnhancement.sharedo differ
diff --git a/hostdepend/X86MAC64/lib/X86MAC64/shared/lmrcImagePrevitt.sharedo b/hostdepend/X86MAC64/lib/X86MAC64/shared/lmrcImagePrevitt.sharedo
new file mode 100644 (file)
index 0000000..c9b1f7a
Binary files /dev/null and b/hostdepend/X86MAC64/lib/X86MAC64/shared/lmrcImagePrevitt.sharedo differ
diff --git a/hostdepend/X86MAC64/lib/X86MAC64/shared/lmrcImageRoberts.sharedo b/hostdepend/X86MAC64/lib/X86MAC64/shared/lmrcImageRoberts.sharedo
new file mode 100644 (file)
index 0000000..6b1de5a
Binary files /dev/null and b/hostdepend/X86MAC64/lib/X86MAC64/shared/lmrcImageRoberts.sharedo differ
diff --git a/hostdepend/X86MAC64/lib/X86MAC64/shared/lmrcImageSobel.sharedo b/hostdepend/X86MAC64/lib/X86MAC64/shared/lmrcImageSobel.sharedo
new file mode 100644 (file)
index 0000000..3feefae
Binary files /dev/null and b/hostdepend/X86MAC64/lib/X86MAC64/shared/lmrcImageSobel.sharedo differ
index 2e20fa2..d785bac 100644 (file)
@@ -77,6 +77,7 @@ X86MAC64/lmrcImagePad.o:lmrcImagePad.o
 X86MAC64/lmrcImagePartImageSegmentation.o:lmrcImagePartImageSegmentation.o
 X86MAC64/lmrcImagePixelSummationOfProbabilityGetByImage.o:lmrcImagePixelSummationOfProbabilityGetByImage.o
 X86MAC64/lmrcImagePosterization.o:lmrcImagePosterization.o
+X86MAC64/lmrcImagePrevitt.o:lmrcImagePrevitt.o
 X86MAC64/lmrcImageProjection.o:lmrcImageProjection.o
 X86MAC64/lmrcImageProportionalDensityLevelSetByImage.o:lmrcImageProportionalDensityLevelSetByImage.o
 X86MAC64/lmrcImageROI2D.o:lmrcImageROI2D.o
@@ -84,6 +85,7 @@ X86MAC64/lmrcImageROI3D.o:lmrcImageROI3D.o
 X86MAC64/lmrcImageROInotChangeHeaderLength.o:lmrcImageROInotChangeHeaderLength.o
 X86MAC64/lmrcImageRadialDistribution.o:lmrcImageRadialDistribution.o
 X86MAC64/lmrcImageRhoFiltering.o:lmrcImageRhoFiltering.o
+X86MAC64/lmrcImageRoberts.o:lmrcImageRoberts.o
 X86MAC64/lmrcImageRotation.o:lmrcImageRotation.o
 X86MAC64/lmrcImageSSDA.o:lmrcImageSSDA.o
 X86MAC64/lmrcImageSamplingUnitChange.o:lmrcImageSamplingUnitChange.o
@@ -101,6 +103,7 @@ X86MAC64/lmrcImageSinogram.o:lmrcImageSinogram.o
 X86MAC64/lmrcImageSinogramCorrelation.o:lmrcImageSinogramCorrelation.o
 X86MAC64/lmrcImageSinogramFFT.o:lmrcImageSinogramFFT.o
 X86MAC64/lmrcImageSmoothing.o:lmrcImageSmoothing.o
+X86MAC64/lmrcImageSobel.o:lmrcImageSobel.o
 X86MAC64/lmrcImageSolventFlattening.o:lmrcImageSolventFlattening.o
 X86MAC64/lmrcImageSphere.o:lmrcImageSphere.o
 X86MAC64/lmrcImageSplit.o:lmrcImageSplit.o
index b954377..5fa35a8 100644 (file)
@@ -78,6 +78,7 @@ lmrcImagePad.c \
 lmrcImagePartImageSegmentation.c \
 lmrcImagePixelSummationOfProbabilityGetByImage.c \
 lmrcImagePosterization.c \
+lmrcImagePrevitt.c \
 lmrcImageProjection.c \
 lmrcImageProportionalDensityLevelSetByImage.c \
 lmrcImageROI2D.c \
@@ -85,6 +86,7 @@ lmrcImageROI3D.c \
 lmrcImageROInotChangeHeaderLength.c \
 lmrcImageRadialDistribution.c \
 lmrcImageRhoFiltering.c \
+lmrcImageRoberts.c \
 lmrcImageRotation.c \
 lmrcImageSSDA.c \
 lmrcImageSamplingUnitChange.c \
@@ -102,6 +104,7 @@ lmrcImageSinogram.c \
 lmrcImageSinogramCorrelation.c \
 lmrcImageSinogramFFT.c \
 lmrcImageSmoothing.c \
+lmrcImageSobel.c \
 lmrcImageSolventFlattening.c \
 lmrcImageSphere.c \
 lmrcImageSplit.c \
@@ -234,6 +237,7 @@ lmrcImagePad.o \
 lmrcImagePartImageSegmentation.o \
 lmrcImagePixelSummationOfProbabilityGetByImage.o \
 lmrcImagePosterization.o \
+lmrcImagePrevitt.o \
 lmrcImageProjection.o \
 lmrcImageProportionalDensityLevelSetByImage.o \
 lmrcImageROI2D.o \
@@ -241,6 +245,7 @@ lmrcImageROI3D.o \
 lmrcImageROInotChangeHeaderLength.o \
 lmrcImageRadialDistribution.o \
 lmrcImageRhoFiltering.o \
+lmrcImageRoberts.o \
 lmrcImageRotation.o \
 lmrcImageSSDA.o \
 lmrcImageSamplingUnitChange.o \
@@ -258,6 +263,7 @@ lmrcImageSinogram.o \
 lmrcImageSinogramCorrelation.o \
 lmrcImageSinogramFFT.o \
 lmrcImageSmoothing.o \
+lmrcImageSobel.o \
 lmrcImageSolventFlattening.o \
 lmrcImageSphere.o \
 lmrcImageSplit.o \
@@ -390,6 +396,7 @@ lmrcImagePad.sharedo \
 lmrcImagePartImageSegmentation.sharedo \
 lmrcImagePixelSummationOfProbabilityGetByImage.sharedo \
 lmrcImagePosterization.sharedo \
+lmrcImagePrevitt.sharedo \
 lmrcImageProjection.sharedo \
 lmrcImageProportionalDensityLevelSetByImage.sharedo \
 lmrcImageROI2D.sharedo \
@@ -397,6 +404,7 @@ lmrcImageROI3D.sharedo \
 lmrcImageROInotChangeHeaderLength.sharedo \
 lmrcImageRadialDistribution.sharedo \
 lmrcImageRhoFiltering.sharedo \
+lmrcImageRoberts.sharedo \
 lmrcImageRotation.sharedo \
 lmrcImageSSDA.sharedo \
 lmrcImageSamplingUnitChange.sharedo \
@@ -414,6 +422,7 @@ lmrcImageSinogram.sharedo \
 lmrcImageSinogramCorrelation.sharedo \
 lmrcImageSinogramFFT.sharedo \
 lmrcImageSmoothing.sharedo \
+lmrcImageSobel.sharedo \
 lmrcImageSolventFlattening.sharedo \
 lmrcImageSphere.sharedo \
 lmrcImageSplit.sharedo \
@@ -546,6 +555,7 @@ X86MAC64/lmrcImagePad.o \
 X86MAC64/lmrcImagePartImageSegmentation.o \
 X86MAC64/lmrcImagePixelSummationOfProbabilityGetByImage.o \
 X86MAC64/lmrcImagePosterization.o \
+X86MAC64/lmrcImagePrevitt.o \
 X86MAC64/lmrcImageProjection.o \
 X86MAC64/lmrcImageProportionalDensityLevelSetByImage.o \
 X86MAC64/lmrcImageROI2D.o \
@@ -553,6 +563,7 @@ X86MAC64/lmrcImageROI3D.o \
 X86MAC64/lmrcImageROInotChangeHeaderLength.o \
 X86MAC64/lmrcImageRadialDistribution.o \
 X86MAC64/lmrcImageRhoFiltering.o \
+X86MAC64/lmrcImageRoberts.o \
 X86MAC64/lmrcImageRotation.o \
 X86MAC64/lmrcImageSSDA.o \
 X86MAC64/lmrcImageSamplingUnitChange.o \
@@ -570,6 +581,7 @@ X86MAC64/lmrcImageSinogram.o \
 X86MAC64/lmrcImageSinogramCorrelation.o \
 X86MAC64/lmrcImageSinogramFFT.o \
 X86MAC64/lmrcImageSmoothing.o \
+X86MAC64/lmrcImageSobel.o \
 X86MAC64/lmrcImageSolventFlattening.o \
 X86MAC64/lmrcImageSphere.o \
 X86MAC64/lmrcImageSplit.o \
@@ -702,6 +714,7 @@ X86MAC64/lmrcImagePad.sharedo \
 X86MAC64/lmrcImagePartImageSegmentation.sharedo \
 X86MAC64/lmrcImagePixelSummationOfProbabilityGetByImage.sharedo \
 X86MAC64/lmrcImagePosterization.sharedo \
+X86MAC64/lmrcImagePrevitt.sharedo \
 X86MAC64/lmrcImageProjection.sharedo \
 X86MAC64/lmrcImageProportionalDensityLevelSetByImage.sharedo \
 X86MAC64/lmrcImageROI2D.sharedo \
@@ -709,6 +722,7 @@ X86MAC64/lmrcImageROI3D.sharedo \
 X86MAC64/lmrcImageROInotChangeHeaderLength.sharedo \
 X86MAC64/lmrcImageRadialDistribution.sharedo \
 X86MAC64/lmrcImageRhoFiltering.sharedo \
+X86MAC64/lmrcImageRoberts.sharedo \
 X86MAC64/lmrcImageRotation.sharedo \
 X86MAC64/lmrcImageSSDA.sharedo \
 X86MAC64/lmrcImageSamplingUnitChange.sharedo \
@@ -726,6 +740,7 @@ X86MAC64/lmrcImageSinogram.sharedo \
 X86MAC64/lmrcImageSinogramCorrelation.sharedo \
 X86MAC64/lmrcImageSinogramFFT.sharedo \
 X86MAC64/lmrcImageSmoothing.sharedo \
+X86MAC64/lmrcImageSobel.sharedo \
 X86MAC64/lmrcImageSolventFlattening.sharedo \
 X86MAC64/lmrcImageSphere.sharedo \
 X86MAC64/lmrcImageSplit.sharedo \
@@ -858,6 +873,7 @@ lmrcImagePad.debugo \
 lmrcImagePartImageSegmentation.debugo \
 lmrcImagePixelSummationOfProbabilityGetByImage.debugo \
 lmrcImagePosterization.debugo \
+lmrcImagePrevitt.debugo \
 lmrcImageProjection.debugo \
 lmrcImageProportionalDensityLevelSetByImage.debugo \
 lmrcImageROI2D.debugo \
@@ -865,6 +881,7 @@ lmrcImageROI3D.debugo \
 lmrcImageROInotChangeHeaderLength.debugo \
 lmrcImageRadialDistribution.debugo \
 lmrcImageRhoFiltering.debugo \
+lmrcImageRoberts.debugo \
 lmrcImageRotation.debugo \
 lmrcImageSSDA.debugo \
 lmrcImageSamplingUnitChange.debugo \
@@ -882,6 +899,7 @@ lmrcImageSinogram.debugo \
 lmrcImageSinogramCorrelation.debugo \
 lmrcImageSinogramFFT.debugo \
 lmrcImageSmoothing.debugo \
+lmrcImageSobel.debugo \
 lmrcImageSolventFlattening.debugo \
 lmrcImageSphere.debugo \
 lmrcImageSplit.debugo \
@@ -1012,6 +1030,7 @@ X86MAC64/lmrcImagePad.debugo \
 X86MAC64/lmrcImagePartImageSegmentation.debugo \
 X86MAC64/lmrcImagePixelSummationOfProbabilityGetByImage.debugo \
 X86MAC64/lmrcImagePosterization.debugo \
+X86MAC64/lmrcImagePrevitt.debugo \
 X86MAC64/lmrcImageProjection.debugo \
 X86MAC64/lmrcImageProportionalDensityLevelSetByImage.debugo \
 X86MAC64/lmrcImageROI2D.debugo \
@@ -1019,6 +1038,7 @@ X86MAC64/lmrcImageROI3D.debugo \
 X86MAC64/lmrcImageROInotChangeHeaderLength.debugo \
 X86MAC64/lmrcImageRadialDistribution.debugo \
 X86MAC64/lmrcImageRhoFiltering.debugo \
+X86MAC64/lmrcImageRoberts.debugo \
 X86MAC64/lmrcImageRotation.debugo \
 X86MAC64/lmrcImageSSDA.debugo \
 X86MAC64/lmrcImageSamplingUnitChange.debugo \
@@ -1036,6 +1056,7 @@ X86MAC64/lmrcImageSinogram.debugo \
 X86MAC64/lmrcImageSinogramCorrelation.debugo \
 X86MAC64/lmrcImageSinogramFFT.debugo \
 X86MAC64/lmrcImageSmoothing.debugo \
+X86MAC64/lmrcImageSobel.debugo \
 X86MAC64/lmrcImageSolventFlattening.debugo \
 X86MAC64/lmrcImageSphere.debugo \
 X86MAC64/lmrcImageSplit.debugo \
@@ -1168,6 +1189,7 @@ lmrcImagePad.cudagdb.o \
 lmrcImagePartImageSegmentation.cudagdb.o \
 lmrcImagePixelSummationOfProbabilityGetByImage.cudagdb.o \
 lmrcImagePosterization.cudagdb.o \
+lmrcImagePrevitt.cudagdb.o \
 lmrcImageProjection.cudagdb.o \
 lmrcImageProportionalDensityLevelSetByImage.cudagdb.o \
 lmrcImageROI2D.cudagdb.o \
@@ -1175,6 +1197,7 @@ lmrcImageROI3D.cudagdb.o \
 lmrcImageROInotChangeHeaderLength.cudagdb.o \
 lmrcImageRadialDistribution.cudagdb.o \
 lmrcImageRhoFiltering.cudagdb.o \
+lmrcImageRoberts.cudagdb.o \
 lmrcImageRotation.cudagdb.o \
 lmrcImageSSDA.cudagdb.o \
 lmrcImageSamplingUnitChange.cudagdb.o \
@@ -1192,6 +1215,7 @@ lmrcImageSinogram.cudagdb.o \
 lmrcImageSinogramCorrelation.cudagdb.o \
 lmrcImageSinogramFFT.cudagdb.o \
 lmrcImageSmoothing.cudagdb.o \
+lmrcImageSobel.cudagdb.o \
 lmrcImageSolventFlattening.cudagdb.o \
 lmrcImageSphere.cudagdb.o \
 lmrcImageSplit.cudagdb.o \
@@ -1324,6 +1348,7 @@ X86MAC64/lmrcImagePad.cudagdb.o \
 X86MAC64/lmrcImagePartImageSegmentation.cudagdb.o \
 X86MAC64/lmrcImagePixelSummationOfProbabilityGetByImage.cudagdb.o \
 X86MAC64/lmrcImagePosterization.cudagdb.o \
+X86MAC64/lmrcImagePrevitt.cudagdb.o \
 X86MAC64/lmrcImageProjection.cudagdb.o \
 X86MAC64/lmrcImageProportionalDensityLevelSetByImage.cudagdb.o \
 X86MAC64/lmrcImageROI2D.cudagdb.o \
@@ -1331,6 +1356,7 @@ X86MAC64/lmrcImageROI3D.cudagdb.o \
 X86MAC64/lmrcImageROInotChangeHeaderLength.cudagdb.o \
 X86MAC64/lmrcImageRadialDistribution.cudagdb.o \
 X86MAC64/lmrcImageRhoFiltering.cudagdb.o \
+X86MAC64/lmrcImageRoberts.cudagdb.o \
 X86MAC64/lmrcImageRotation.cudagdb.o \
 X86MAC64/lmrcImageSSDA.cudagdb.o \
 X86MAC64/lmrcImageSamplingUnitChange.cudagdb.o \
@@ -1348,6 +1374,7 @@ X86MAC64/lmrcImageSinogram.cudagdb.o \
 X86MAC64/lmrcImageSinogramCorrelation.cudagdb.o \
 X86MAC64/lmrcImageSinogramFFT.cudagdb.o \
 X86MAC64/lmrcImageSmoothing.cudagdb.o \
+X86MAC64/lmrcImageSobel.cudagdb.o \
 X86MAC64/lmrcImageSolventFlattening.cudagdb.o \
 X86MAC64/lmrcImageSphere.cudagdb.o \
 X86MAC64/lmrcImageSplit.cudagdb.o \
index 01fe72c..d8c6e64 100644 (file)
Binary files a/hostdepend/X86MAC64/src/Objects/DataManip/mrcImage/src/X86MAC64/libmrcImage.a and b/hostdepend/X86MAC64/src/Objects/DataManip/mrcImage/src/X86MAC64/libmrcImage.a differ
index c5dd3f1..67820d9 100644 (file)
Binary files a/hostdepend/X86MAC64/src/Objects/DataManip/mrcImage/src/X86MAC64/libmrcImage.debug.a and b/hostdepend/X86MAC64/src/Objects/DataManip/mrcImage/src/X86MAC64/libmrcImage.debug.a differ
index 84ddbc2..9bf83ab 100644 (file)
Binary files a/hostdepend/X86MAC64/src/Objects/DataManip/mrcImage/src/X86MAC64/lmrcImageEdgeEnhancement.sharedo and b/hostdepend/X86MAC64/src/Objects/DataManip/mrcImage/src/X86MAC64/lmrcImageEdgeEnhancement.sharedo differ
diff --git a/hostdepend/X86MAC64/src/Objects/DataManip/mrcImage/src/X86MAC64/lmrcImagePrevitt.c b/hostdepend/X86MAC64/src/Objects/DataManip/mrcImage/src/X86MAC64/lmrcImagePrevitt.c
new file mode 120000 (symlink)
index 0000000..57e5a79
--- /dev/null
@@ -0,0 +1 @@
+../lmrcImagePrevitt.c
\ No newline at end of file
diff --git a/hostdepend/X86MAC64/src/Objects/DataManip/mrcImage/src/X86MAC64/lmrcImagePrevitt.sharedo b/hostdepend/X86MAC64/src/Objects/DataManip/mrcImage/src/X86MAC64/lmrcImagePrevitt.sharedo
new file mode 100644 (file)
index 0000000..c9b1f7a
Binary files /dev/null and b/hostdepend/X86MAC64/src/Objects/DataManip/mrcImage/src/X86MAC64/lmrcImagePrevitt.sharedo differ
diff --git a/hostdepend/X86MAC64/src/Objects/DataManip/mrcImage/src/X86MAC64/lmrcImageRoberts.c b/hostdepend/X86MAC64/src/Objects/DataManip/mrcImage/src/X86MAC64/lmrcImageRoberts.c
new file mode 120000 (symlink)
index 0000000..87d1ca4
--- /dev/null
@@ -0,0 +1 @@
+../lmrcImageRoberts.c
\ No newline at end of file
diff --git a/hostdepend/X86MAC64/src/Objects/DataManip/mrcImage/src/X86MAC64/lmrcImageRoberts.sharedo b/hostdepend/X86MAC64/src/Objects/DataManip/mrcImage/src/X86MAC64/lmrcImageRoberts.sharedo
new file mode 100644 (file)
index 0000000..6b1de5a
Binary files /dev/null and b/hostdepend/X86MAC64/src/Objects/DataManip/mrcImage/src/X86MAC64/lmrcImageRoberts.sharedo differ
diff --git a/hostdepend/X86MAC64/src/Objects/DataManip/mrcImage/src/X86MAC64/lmrcImageSobel.c b/hostdepend/X86MAC64/src/Objects/DataManip/mrcImage/src/X86MAC64/lmrcImageSobel.c
new file mode 120000 (symlink)
index 0000000..04f98aa
--- /dev/null
@@ -0,0 +1 @@
+../lmrcImageSobel.c
\ No newline at end of file
diff --git a/hostdepend/X86MAC64/src/Objects/DataManip/mrcImage/src/X86MAC64/lmrcImageSobel.sharedo b/hostdepend/X86MAC64/src/Objects/DataManip/mrcImage/src/X86MAC64/lmrcImageSobel.sharedo
new file mode 100644 (file)
index 0000000..3feefae
Binary files /dev/null and b/hostdepend/X86MAC64/src/Objects/DataManip/mrcImage/src/X86MAC64/lmrcImageSobel.sharedo differ
index 64d7b98..1039b78 100644 (file)
@@ -84,6 +84,48 @@ init.o: init.c /usr/include/stdio.h /usr/include/sys/cdefs.h \
   /usr/include/limits.h /usr/include/machine/limits.h \
   /usr/include/i386/limits.h /usr/include/i386/_limits.h \
   /usr/include/sys/syslimits.h
+mrcImageEdgeEnhancement.o: mrcImageEdgeEnhancement.c /usr/include/stdio.h \
+  /usr/include/sys/cdefs.h /usr/include/sys/_symbol_aliasing.h \
+  /usr/include/sys/_posix_availability.h /usr/include/Availability.h \
+  /usr/include/AvailabilityInternal.h /usr/include/_types.h \
+  /usr/include/sys/_types.h /usr/include/machine/_types.h \
+  /usr/include/i386/_types.h /usr/include/sys/_types/_va_list.h \
+  /usr/include/sys/_types/_size_t.h /usr/include/sys/_types/_null.h \
+  /usr/include/sys/_types/_off_t.h /usr/include/sys/_types/_ssize_t.h \
+  /usr/include/secure/_stdio.h /usr/include/secure/_common.h \
+  /usr/include/stdlib.h /usr/include/sys/wait.h \
+  /usr/include/sys/_types/_pid_t.h /usr/include/sys/_types/_id_t.h \
+  /usr/include/sys/signal.h /usr/include/sys/appleapiopts.h \
+  /usr/include/machine/signal.h /usr/include/i386/signal.h \
+  /usr/include/machine/_mcontext.h /usr/include/i386/_mcontext.h \
+  /usr/include/mach/i386/_structs.h \
+  /usr/include/sys/_types/_sigaltstack.h \
+  /usr/include/sys/_types/_ucontext.h \
+  /usr/include/sys/_types/_pthread_attr_t.h \
+  /usr/include/sys/_types/_sigset_t.h /usr/include/sys/_types/_uid_t.h \
+  /usr/include/sys/resource.h \
+  /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../lib/clang/5.1/include/stdint.h \
+  /usr/include/stdint.h /usr/include/sys/_types/_int8_t.h \
+  /usr/include/sys/_types/_int16_t.h /usr/include/sys/_types/_int32_t.h \
+  /usr/include/sys/_types/_int64_t.h /usr/include/_types/_uint8_t.h \
+  /usr/include/_types/_uint16_t.h /usr/include/_types/_uint32_t.h \
+  /usr/include/_types/_uint64_t.h /usr/include/sys/_types/_intptr_t.h \
+  /usr/include/sys/_types/_uintptr_t.h /usr/include/_types/_intmax_t.h \
+  /usr/include/_types/_uintmax_t.h /usr/include/sys/_types/_timeval.h \
+  /usr/include/machine/endian.h /usr/include/i386/endian.h \
+  /usr/include/sys/_endian.h /usr/include/libkern/_OSByteOrder.h \
+  /usr/include/libkern/i386/_OSByteOrder.h /usr/include/alloca.h \
+  /usr/include/sys/_types/_ct_rune_t.h /usr/include/sys/_types/_rune_t.h \
+  /usr/include/sys/_types/_wchar_t.h /usr/include/machine/types.h \
+  /usr/include/i386/types.h /usr/include/sys/_types/___offsetof.h \
+  /usr/include/sys/_types/_dev_t.h /usr/include/sys/_types/_mode_t.h \
+  /Users/tacyas/Eos/include/string.h /usr/include/math.h ../inc/config.h \
+  ../inc/../inc/mrcImageEdgeEnhancement.h \
+  /Users/tacyas/Eos/include/genUtil.h \
+  /Users/tacyas/Eos/include/mrcImage.h \
+  /Users/tacyas/Eos/include/ctfInfo.h /Users/tacyas/Eos/include/Vector.h \
+  /Users/tacyas/Eos/include/Matrix3D.h /Users/tacyas/Eos/include/Array.h \
+  /Users/tacyas/Eos/include/lmrcImageEdgeEnhancement.h
 usage.o: usage.c /usr/include/stdio.h /usr/include/sys/cdefs.h \
   /usr/include/sys/_symbol_aliasing.h \
   /usr/include/sys/_posix_availability.h /usr/include/Availability.h \
diff --git a/hostdepend/X86MAC64/src/Tools/mrcImage/mrcImageEdgeEnhancement/src/X86MAC64/X86MAC64 b/hostdepend/X86MAC64/src/Tools/mrcImage/mrcImageEdgeEnhancement/src/X86MAC64/X86MAC64
new file mode 120000 (symlink)
index 0000000..01c434f
--- /dev/null
@@ -0,0 +1 @@
+../../../../../hostdepend/X86MAC64/src/Tools/mrcImage/mrcImageEdgeEnhancement/src/X86MAC64
\ No newline at end of file
index 656dab4..df59094 100755 (executable)
Binary files a/hostdepend/X86MAC64/src/Tools/mrcImage/mrcImageEdgeEnhancement/src/X86MAC64/mrcImageEdgeEnhancement and b/hostdepend/X86MAC64/src/Tools/mrcImage/mrcImageEdgeEnhancement/src/X86MAC64/mrcImageEdgeEnhancement differ
index f14bd00..cc07391 100644 (file)
 
 /* constant begin */
 
+typedef enum lmrcImageEdgeEnhancementMode {
+       lmrcImageEdegeEnhancementModeCentralDifferenceSQRT=0,
+       lmrcImageEdegeEnhancementModeCentralDifferenceABS,
+       lmrcImageEdegeEnhancementModeRobertsCrossSQRT,
+       lmrcImageEdegeEnhancementModeRobertsCrossABS,
+       lmrcImageEdegeEnhancementModePrewittSQRT,
+       lmrcImageEdegeEnhancementModePrewittABS,
+       lmrcImageEdegeEnhancementModeSobelSQRT,
+       lmrcImageEdegeEnhancementModeSobelABS
+} lmrcImageEdgeEnhancementMode;
+
 
 /* constant end */
 
 /* struct begin */
 
 typedef struct lmrcImageEdgeEnhancementInfo {
+       int flagDirection;
+       mrcImage* direction;
+
        int mode;
-}  lmrcImageEdgeEnhancementInfo; 
+} lmrcImageEdgeEnhancementInfo; 
 
 /* struct end */
 
@@ -34,6 +48,18 @@ extern "C" {
 
 /* prototype begin */
 
+extern void lmrcImageEdgeEnhancementPrepare(mrcImage* out, mrcImage* in, lmrcImageEdgeEnhancementInfo* linfo, int mode);
+extern void lmrcImageEdgeEnhancement(mrcImage* out, mrcImage* in, lmrcImageEdgeEnhancementInfo* linfo, int mode);
+extern void lmrcImageEdgeEnhancementModePrint(FILE* fpt);
+
+extern void lmrcImageEdgeEnhancementRobertsCrossOperatorSQRT(mrcImage* out, mrcImage* in, lmrcImageEdgeEnhancementInfo* linfo, int mode);
+extern void lmrcImageEdgeEnhancementRobertsCrossOperatorABS(mrcImage* out, mrcImage* in, lmrcImageEdgeEnhancementInfo* linfo, int mode);
+
+extern void lmrcImageEdgeEnhancementPrewittOperatorSQRT(mrcImage* out, mrcImage* in, lmrcImageEdgeEnhancementInfo* linfo, int mode);
+extern void lmrcImageEdgeEnhancementPrewittOperatorABS(mrcImage* out, mrcImage* in, lmrcImageEdgeEnhancementInfo* linfo, int mode);
+
+extern void lmrcImageEdgeEnhancementSobelOperatorSQRT(mrcImage* out, mrcImage* in, lmrcImageEdgeEnhancementInfo* linfo, int mode);
+extern void lmrcImageEdgeEnhancementSobelOperatorABS(mrcImage* out, mrcImage* in, lmrcImageEdgeEnhancementInfo* linfo, int mode);
 
 
 /* prototype end */
index 1339c1d..e930be1 100644 (file)
 */
 static char __sccs_id[] = "%Z%lmrcImageEdgeEnhancement ver%I%; Date:%D% %Z%";
 
+#include <stdio.h>
+#include <stdlib.h>
+#include "Memory.h"
 #include "./lmrcImageEdgeEnhancement.h"
 
-lmrcImageEdgeEnhancement(mrcImage* out, mrcImage* in, lmrcImageEdgeEnhancementInfo linfo, mode)
+void
+lmrcImageEdgeEnhancementModePrint(FILE* fpt)
 {
-
+       fprintf(stderr, "mode: %d : %s\n", lmrcImageEdegeEnhancementModeRobertsCrossSQRT, "Roberts Cross(SQRT)");
+       fprintf(stderr, "mode: %d : %s\n", lmrcImageEdegeEnhancementModeRobertsCrossABS, "Roberts Cross(ABS)");
+       fprintf(stderr, "mode: %d : %s\n", lmrcImageEdegeEnhancementModePrewittSQRT, "Prewitt(SQRT)");
+       fprintf(stderr, "mode: %d : %s\n", lmrcImageEdegeEnhancementModePrewittABS, "Prewitt(ABS)");
+       fprintf(stderr, "mode: %d : %s\n", lmrcImageEdegeEnhancementModeSobelSQRT, "Sobel(SQRT)");
+       fprintf(stderr, "mode: %d : %s\n", lmrcImageEdegeEnhancementModeSobelABS, "Sobel(ABS)");
 }
 
-
-lmrcImageEdgeEnhancementPrewittOperator(mrcImage* out, mrcImage* in, lmrcImageEdgeEnhancementInfo linfo, mode)
+void
+lmrcImageEdgeEnhancement(mrcImage* out, mrcImage* in, lmrcImageEdgeEnhancementInfo* linfo, int mode)
 {
-
+       switch(mode) {
+               case lmrcImageEdegeEnhancementModeCentralDifferenceSQRT:
+                       break;
+               case lmrcImageEdegeEnhancementModeCentralDifferenceABS:
+                       break;
+               case lmrcImageEdegeEnhancementModeRobertsCrossSQRT:
+                       lmrcImageEdgeEnhancementRobertsCrossOperatorSQRT(out, in, linfo, mode);
+                       break;
+       case lmrcImageEdegeEnhancementModeRobertsCrossABS:
+                       lmrcImageEdgeEnhancementRobertsCrossOperatorABS(out, in, linfo, mode);
+                       break;
+               case lmrcImageEdegeEnhancementModePrewittSQRT:
+                       lmrcImageEdgeEnhancementPrewittOperatorSQRT(out, in, linfo, mode);
+                       break;
+               case lmrcImageEdegeEnhancementModePrewittABS:
+                       lmrcImageEdgeEnhancementPrewittOperatorABS(out, in, linfo, mode);
+                       break;
+               case lmrcImageEdegeEnhancementModeSobelSQRT:
+                       lmrcImageEdgeEnhancementSobelOperatorSQRT(out, in, linfo, mode);
+                       break;
+               case lmrcImageEdegeEnhancementModeSobelABS:
+                       lmrcImageEdgeEnhancementSobelOperatorABS(out, in, linfo, mode);
+                       break;
+               default: 
+                       break;
+       }
 }
 
-
-lmrcImageEdgeEnhancementSobelOperator(mrcImage* out, mrcImage* in, lmrcImageEdgeEnhancementInfo linfo, mode)
+void
+lmrcImageEdgeEnhancementPrepare(mrcImage* out, mrcImage* in, lmrcImageEdgeEnhancementInfo* linfo, int mode)
 {
-
+       int i, max;
+
+       out->Header.Cont = in->Header.Cont;
+       mrcInit(out, NULL);
+       if(linfo->flagDirection) {
+               if(1<in->HeaderN.z) {
+               max = 2;
+               } else {
+                       max = 1;
+               }
+               linfo->direction = (mrcImage*)memoryAllocate(sizeof(mrcImage)*max, "in lmrcImageEdgeEnhancementRobertsCrossOperator");
+               for(i=0; i<max; i++) {
+                       linfo->direction[i].Header.Cont = in->Header.Cont;
+                       mrcInit(&(linfo->direction[i]), NULL);
+               }
+       }
 }
 
-
-lmrcImageEdgeEnhancementCannyFilter(mrcImage* out, mrcImage* in, lmrcImageEdgeEnhancementInfo linfo, mode)
-{
-
-}
-
-
-lmrcImageEdgeEnhancementDericheFilter(mrcImage* out, mrcImage* in, lmrcImageEdgeEnhancementInfo linfo, mode)
-{
-
-}
-
-
-
index f14bd00..cc07391 100644 (file)
 
 /* constant begin */
 
+typedef enum lmrcImageEdgeEnhancementMode {
+       lmrcImageEdegeEnhancementModeCentralDifferenceSQRT=0,
+       lmrcImageEdegeEnhancementModeCentralDifferenceABS,
+       lmrcImageEdegeEnhancementModeRobertsCrossSQRT,
+       lmrcImageEdegeEnhancementModeRobertsCrossABS,
+       lmrcImageEdegeEnhancementModePrewittSQRT,
+       lmrcImageEdegeEnhancementModePrewittABS,
+       lmrcImageEdegeEnhancementModeSobelSQRT,
+       lmrcImageEdegeEnhancementModeSobelABS
+} lmrcImageEdgeEnhancementMode;
+
 
 /* constant end */
 
 /* struct begin */
 
 typedef struct lmrcImageEdgeEnhancementInfo {
+       int flagDirection;
+       mrcImage* direction;
+
        int mode;
-}  lmrcImageEdgeEnhancementInfo; 
+} lmrcImageEdgeEnhancementInfo; 
 
 /* struct end */
 
@@ -34,6 +48,18 @@ extern "C" {
 
 /* prototype begin */
 
+extern void lmrcImageEdgeEnhancementPrepare(mrcImage* out, mrcImage* in, lmrcImageEdgeEnhancementInfo* linfo, int mode);
+extern void lmrcImageEdgeEnhancement(mrcImage* out, mrcImage* in, lmrcImageEdgeEnhancementInfo* linfo, int mode);
+extern void lmrcImageEdgeEnhancementModePrint(FILE* fpt);
+
+extern void lmrcImageEdgeEnhancementRobertsCrossOperatorSQRT(mrcImage* out, mrcImage* in, lmrcImageEdgeEnhancementInfo* linfo, int mode);
+extern void lmrcImageEdgeEnhancementRobertsCrossOperatorABS(mrcImage* out, mrcImage* in, lmrcImageEdgeEnhancementInfo* linfo, int mode);
+
+extern void lmrcImageEdgeEnhancementPrewittOperatorSQRT(mrcImage* out, mrcImage* in, lmrcImageEdgeEnhancementInfo* linfo, int mode);
+extern void lmrcImageEdgeEnhancementPrewittOperatorABS(mrcImage* out, mrcImage* in, lmrcImageEdgeEnhancementInfo* linfo, int mode);
+
+extern void lmrcImageEdgeEnhancementSobelOperatorSQRT(mrcImage* out, mrcImage* in, lmrcImageEdgeEnhancementInfo* linfo, int mode);
+extern void lmrcImageEdgeEnhancementSobelOperatorABS(mrcImage* out, mrcImage* in, lmrcImageEdgeEnhancementInfo* linfo, int mode);
 
 
 /* prototype end */
diff --git a/src/Objects/DataManip/mrcImage/src/lmrcImagePrevitt.c b/src/Objects/DataManip/mrcImage/src/lmrcImagePrevitt.c
new file mode 100644 (file)
index 0000000..c9e6f45
--- /dev/null
@@ -0,0 +1,179 @@
+/*
+# %M% %Y% %I%
+# The latest update : %G% at %U%
+#
+#%Z% lmrcImagePrevitt ver %I%
+#%Z% Created by 
+#%Z%
+#%Z% Usage : lmrcImagePrevitt 
+#%Z% Attention
+#%Z%
+*/
+static char __sccs_id[] = "%Z%lmrcImagePrevitt ver%I%; Date:%D% %Z%";
+
+#include <stdio.h>
+#include <stdlib.h>
+#include "./lmrcImageEdgeEnhancement.h"
+
+void
+lmrcImageEdgeEnhancementPrewittOperatorSQRT(mrcImage* out, mrcImage* in, lmrcImageEdgeEnhancementInfo* linfo, int mode)
+{
+       mrcImageParaTypeReal x, y, z;
+       double src00, src01, src02;
+       double src10, src11, src12;
+       double src20, src21, src22;
+       double src000, src001, src002, src010, src011, src012, src020, src021, src022;
+       double src100, src101, src102, src110, src111, src112, src120, src121, src122;
+       double src200, src201, src202, src210, src211, src212, src220, src221, src222;
+       double dst, Gx, Gy, Gz;
+
+
+       lmrcImageEdgeEnhancementPrepare(out, in, linfo, mode);
+
+       if(1<in->HeaderN.z) { // 3D
+               for(z=0; z<in->HeaderN.z; z++) {
+               for(y=0; y<in->HeaderN.y; y++) {
+               for(x=0; x<in->HeaderN.x; x++) {
+                       mrcPixelDataGet(in, x,   y,   z  , &src000, mrcPixelRePart, mrcPixelHowNearest);
+                       mrcPixelDataGet(in, x,   y,   z+1, &src001, mrcPixelRePart, mrcPixelHowNearest);
+                       mrcPixelDataGet(in, x,   y+1, z  , &src010, mrcPixelRePart, mrcPixelHowNearest);
+                       mrcPixelDataGet(in, x,   y+1, z+1, &src011, mrcPixelRePart, mrcPixelHowNearest);
+                       mrcPixelDataGet(in, x,   y,   z  , &src100, mrcPixelRePart, mrcPixelHowNearest);
+                       mrcPixelDataGet(in, x,   y,   z+1, &src101, mrcPixelRePart, mrcPixelHowNearest);
+                       mrcPixelDataGet(in, x,   y+1, z  , &src010, mrcPixelRePart, mrcPixelHowNearest);
+                       mrcPixelDataGet(in, x,   y+1, z+1, &src011, mrcPixelRePart, mrcPixelHowNearest);
+                       switch(mode) { 
+                               case 0: { /* 2x2x1 */
+                                       Gx = (src200 - src000 + src210 - src010 + src220 - src020
+                                            +src200 - src000 + src201 - src001 + src202 - src002)/6.0;
+                                       Gy = (src020 - src000 + src021 - src001 + src022 - src002
+                                            +src020 - src000 + src120 - src100 + src220 - src200)/6.0;
+                                       Gz = (src002 - src000 + src102 - src100 + src202 - src200
+                                            +src002 - src000 + src012 - src010 + src022 - src020)/6.0;
+                                       break;
+                               }
+                               default: {
+                                       fprintf(stderr, "Not supported mode: %d in lmrcImageEdgeEnhancementRobertsCrossOperatorSQRT\n", mode);
+                                       exit(EXIT_FAILURE);
+                                       break;
+                               }
+                       }
+                       dst = SQR(Gx) + SQR(Gy) + SQR(Gz);
+                       if(0<dst) {
+                               dst = sqrt(dst);
+                       } else {
+                               dst = 0;
+                       }
+                       mrcPixelDataSet(out, x, y, z, dst, mrcPixelRePart);
+               }
+               }
+               }
+       } else { // 2D
+               for(y=1; y<in->HeaderN.y-1; y++) {
+               for(x=1; x<in->HeaderN.x-1; x++) {
+                       mrcPixelDataGet(in, x-1, y-1, 0, &src00, mrcPixelRePart, mrcPixelHowNearest);
+                       mrcPixelDataGet(in, x-1, y,   0, &src01, mrcPixelRePart, mrcPixelHowNearest);
+                       mrcPixelDataGet(in, x-1, y+1, 0, &src02, mrcPixelRePart, mrcPixelHowNearest);
+                       mrcPixelDataGet(in, x,   y-1, 0, &src10, mrcPixelRePart, mrcPixelHowNearest);
+                       mrcPixelDataGet(in, x,   y+1, 0, &src12, mrcPixelRePart, mrcPixelHowNearest);
+                       mrcPixelDataGet(in, x+1, y-1, 0, &src20, mrcPixelRePart, mrcPixelHowNearest);
+                       mrcPixelDataGet(in, x+1, y,   0, &src21, mrcPixelRePart, mrcPixelHowNearest);
+                       mrcPixelDataGet(in, x+1, y+1, 0, &src22, mrcPixelRePart, mrcPixelHowNearest);
+               
+                       Gx = (src20 - src00 + src21 - src01 + src22 - src02)/3.0;
+                       Gy = (src02 - src00 + src12 - src10 + src22 - src20)/3.0;
+                       
+                       dst = SQR(Gx) + SQR(Gy);
+                       if(0<dst) {
+                               dst = sqrt(dst);
+                       } else {
+                               dst = 0;
+                       }
+                       mrcPixelDataSet(out, x, y, 0, dst, mrcPixelRePart);
+
+                       if(linfo->flagDirection) {
+                               dst = atan2(Gy, Gx)*180.0/M_PI;
+                               mrcPixelDataSet(&(linfo->direction[0]), x, y, 0, dst, mrcPixelRePart);
+                       }
+               }
+               }
+       }
+}
+
+
+void
+lmrcImageEdgeEnhancementPrewittOperatorABS(mrcImage* out, mrcImage* in, lmrcImageEdgeEnhancementInfo* linfo, int mode)
+{
+       mrcImageParaTypeReal x, y, z;
+       double src00, src01, src02;
+       double src10, src11, src12;
+       double src20, src21, src22;
+       double src000, src001, src002, src010, src011, src012, src020, src021, src022;
+       double src100, src101, src102, src110, src111, src112, src120, src121, src122;
+       double src200, src201, src202, src210, src211, src212, src220, src221, src222;
+       double dst, Gx, Gy, Gz;
+
+
+       lmrcImageEdgeEnhancementPrepare(out, in, linfo, mode);
+
+       if(1<in->HeaderN.z) { // 3D
+               for(z=0; z<in->HeaderN.z; z++) {
+               for(y=0; y<in->HeaderN.y; y++) {
+               for(x=0; x<in->HeaderN.x; x++) {
+                       mrcPixelDataGet(in, x,   y,   z  , &src000, mrcPixelRePart, mrcPixelHowNearest);
+                       mrcPixelDataGet(in, x,   y,   z+1, &src001, mrcPixelRePart, mrcPixelHowNearest);
+                       mrcPixelDataGet(in, x,   y+1, z  , &src010, mrcPixelRePart, mrcPixelHowNearest);
+                       mrcPixelDataGet(in, x,   y+1, z+1, &src011, mrcPixelRePart, mrcPixelHowNearest);
+                       mrcPixelDataGet(in, x,   y,   z  , &src100, mrcPixelRePart, mrcPixelHowNearest);
+                       mrcPixelDataGet(in, x,   y,   z+1, &src101, mrcPixelRePart, mrcPixelHowNearest);
+                       mrcPixelDataGet(in, x,   y+1, z  , &src010, mrcPixelRePart, mrcPixelHowNearest);
+                       mrcPixelDataGet(in, x,   y+1, z+1, &src011, mrcPixelRePart, mrcPixelHowNearest);
+                       switch(mode) { 
+                               case 0: { /* 2x2x1 */
+                                       Gx = (src200 - src000 + src210 - src010 + src220 - src020
+                                            +src200 - src000 + src201 - src001 + src202 - src002)/6.0;
+                                       Gy = (src020 - src000 + src021 - src001 + src022 - src002
+                                            +src020 - src000 + src120 - src100 + src220 - src200)/6.0;
+                                       Gz = (src002 - src000 + src102 - src100 + src202 - src200
+                                            +src002 - src000 + src012 - src010 + src022 - src020)/6.0;
+                                       break;
+                               }
+                               default: {
+                                       fprintf(stderr, "Not supported mode: %d in lmrcImageEdgeEnhancementRobertsCrossOperatorSQRT\n", mode);
+                                       exit(EXIT_FAILURE);
+                                       break;
+                               }
+                       }
+                       dst = fabs(Gx) + fabs(Gy) + fabs(Gz);
+                       mrcPixelDataSet(out, x, y, z, dst, mrcPixelRePart);
+               }
+               }
+               }
+       } else { // 2D
+               for(y=1; y<in->HeaderN.y-1; y++) {
+               for(x=1; x<in->HeaderN.x-1; x++) {
+                       mrcPixelDataGet(in, x-1, y-1, 0, &src00, mrcPixelRePart, mrcPixelHowNearest);
+                       mrcPixelDataGet(in, x-1, y,   0, &src01, mrcPixelRePart, mrcPixelHowNearest);
+                       mrcPixelDataGet(in, x-1, y+1, 0, &src02, mrcPixelRePart, mrcPixelHowNearest);
+                       mrcPixelDataGet(in, x,   y-1, 0, &src10, mrcPixelRePart, mrcPixelHowNearest);
+                       mrcPixelDataGet(in, x,   y+1, 0, &src12, mrcPixelRePart, mrcPixelHowNearest);
+                       mrcPixelDataGet(in, x+1, y-1, 0, &src20, mrcPixelRePart, mrcPixelHowNearest);
+                       mrcPixelDataGet(in, x+1, y,   0, &src21, mrcPixelRePart, mrcPixelHowNearest);
+                       mrcPixelDataGet(in, x+1, y+1, 0, &src22, mrcPixelRePart, mrcPixelHowNearest);
+               
+                       Gx = (src20 - src00 + src21 - src01 + src22 - src02)/3.0;
+                       Gy = (src02 - src00 + src12 - src10 + src22 - src20)/3.0;
+                       
+                       dst = fabs(Gx) + fabs(Gy);
+                       mrcPixelDataSet(out, x, y, 0, dst, mrcPixelRePart);
+
+                       if(linfo->flagDirection) {
+                               dst = atan2(Gy, Gx)*180.0/M_PI;
+                               mrcPixelDataSet(&(linfo->direction[0]), x, y, 0, dst, mrcPixelRePart);
+                       }
+               }
+               }
+       }
+}
+
+
diff --git a/src/Objects/DataManip/mrcImage/src/lmrcImageRoberts.c b/src/Objects/DataManip/mrcImage/src/lmrcImageRoberts.c
new file mode 100644 (file)
index 0000000..4dccd36
--- /dev/null
@@ -0,0 +1,184 @@
+/*
+# %M% %Y% %I%
+# The latest update : %G% at %U%
+#
+#%Z% lmrcImageRoberts ver %I%
+#%Z% Created by 
+#%Z%
+#%Z% Usage : lmrcImageRoberts 
+#%Z% Attention
+#%Z%
+*/
+static char __sccs_id[] = "%Z%lmrcImageRoberts ver%I%; Date:%D% %Z%";
+
+#include "Memory.h"
+#include "./lmrcImageEdgeEnhancement.h"
+
+void
+lmrcImageEdgeEnhancementRobertsCrossOperatorSQRT(mrcImage* out, mrcImage* in, lmrcImageEdgeEnhancementInfo* linfo, int mode)
+{
+       mrcImageParaTypeReal x, y, z;
+       double src00, src01, src10, src11;
+       double src000, src001, src010, src011;
+       double src100, src101, src110, src111;
+       double dst;
+       double Gx, Gy, Gz;
+       int max, i;
+
+       lmrcImageEdgeEnhancementPrepare(out, in, linfo, mode);
+
+       if(1<in->HeaderN.z) { // 3D
+               for(z=0; z<in->HeaderN.z; z++) {
+               for(y=0; y<in->HeaderN.y; y++) {
+               for(x=0; x<in->HeaderN.x; x++) {
+                       mrcPixelDataGet(in, x,   y,   z  , &src000, mrcPixelRePart, mrcPixelHowNearest);
+                       mrcPixelDataGet(in, x,   y,   z+1, &src001, mrcPixelRePart, mrcPixelHowNearest);
+                       mrcPixelDataGet(in, x,   y+1, z  , &src010, mrcPixelRePart, mrcPixelHowNearest);
+                       mrcPixelDataGet(in, x,   y+1, z+1, &src011, mrcPixelRePart, mrcPixelHowNearest);
+                       mrcPixelDataGet(in, x+1, y,   z  , &src100, mrcPixelRePart, mrcPixelHowNearest);
+                       mrcPixelDataGet(in, x+1, y,   z+1, &src101, mrcPixelRePart, mrcPixelHowNearest);
+                       mrcPixelDataGet(in, x+1, y+1, z  , &src110, mrcPixelRePart, mrcPixelHowNearest);
+                       mrcPixelDataGet(in, x+1, y+1, z+1, &src111, mrcPixelRePart, mrcPixelHowNearest);
+                       switch(mode) { 
+                               case 0: { /* 2x2x1 */
+                                       Gx = SQR(src000 - src011) + SQR(src010 - src001); /* yz-plane */
+                                       Gy = SQR(src000 - src101) + SQR(src001 - src100); /* zx-plane */
+                                       Gz = SQR(src000 - src110) + SQR(src100 - src010); /* xy-plane */
+                                       dst = (Gx + Gy + Gz)/6.0;
+                                       break;
+                               }
+                               case 1: { /* 2x2x2 */
+                                       dst = SQR(src110-src000) + SQR(src100 - src010) /* xy-plane z=0 */
+                                                +SQR(src010-src000) + SQR(src000 - src010) /* yz-plane x=0 */
+                                                +SQR(src101-src000) + SQR(src001 - src100) /* zx-plane y=0 */
+                                            +SQR(src111-src001) + SQR(src101 - src011) /* xy-plane z=1 */
+                                                +SQR(src110-src100) + SQR(src100 - src110) /* yz-plane x=1 */
+                                                +SQR(src111-src010) + SQR(src011 - src110);/* zx-plane y=1 */
+                                       dst /= 12.0;
+                                       break;
+                               }
+                               default: {
+                                       fprintf(stderr, "Not supported mode: %d in lmrcImageEdgeEnhancementRobertsCrossOperatorSQRT\n", mode);
+                                       exit(EXIT_FAILURE);
+                                       break;
+                               }
+                       }
+                       if(0<dst) {
+                               dst = sqrt(dst);
+                       } else {
+                               dst = 0;
+                       }
+                       mrcPixelDataSet(out, x, y, z, dst, mrcPixelRePart);
+               }
+               }
+               }
+       } else { // 2D
+               for(y=0; y<in->HeaderN.y-1; y++) {
+               for(x=0; x<in->HeaderN.x-1; x++) {
+                       mrcPixelDataGet(in, x,   y,   0, &src00, mrcPixelRePart, mrcPixelHowNearest);
+                       mrcPixelDataGet(in, x,   y+1, 0, &src01, mrcPixelRePart, mrcPixelHowNearest);
+                       mrcPixelDataGet(in, x+1, y,   0, &src10, mrcPixelRePart, mrcPixelHowNearest);
+                       mrcPixelDataGet(in, x+1, y+1, 0, &src11, mrcPixelRePart, mrcPixelHowNearest);
+
+                       Gx = src00 - src11;
+                       Gy = src10 - src01;
+
+                       dst = SQR(Gx) + SQR(Gy);
+                       if(0<dst) {
+                               dst = sqrt(dst/2.0);
+                       } else {
+                               dst = 0;
+                       }
+                       mrcPixelDataSet(out, x, y, 0, dst, mrcPixelRePart);
+
+                       dst = atan2(Gy, Gx)*180/M_PI;
+               
+                       if(linfo->flagDirection) {
+                               mrcPixelDataSet(&(linfo->direction[0]), x, y, 0, dst, mrcPixelRePart);
+                       }
+               }
+               }
+       }
+}
+
+
+void
+lmrcImageEdgeEnhancementRobertsCrossOperatorABS(mrcImage* out, mrcImage* in, lmrcImageEdgeEnhancementInfo* linfo, int mode)
+{
+       mrcImageParaTypeReal x, y, z;
+       double src00, src01, src10, src11;
+       double src000, src001, src010, src011;
+       double src100, src101, src110, src111;
+       double dst;
+       double Gx, Gy, Gz;
+       int max, i;
+
+       lmrcImageEdgeEnhancementPrepare(out, in, linfo, mode);
+
+       if(1<in->HeaderN.z) { // 3D
+               for(z=0; z<in->HeaderN.z; z++) {
+               for(y=0; y<in->HeaderN.y; y++) {
+               for(x=0; x<in->HeaderN.x; x++) {
+                       mrcPixelDataGet(in, x,   y,   z  , &src000, mrcPixelRePart, mrcPixelHowNearest);
+                       mrcPixelDataGet(in, x,   y,   z+1, &src001, mrcPixelRePart, mrcPixelHowNearest);
+                       mrcPixelDataGet(in, x,   y+1, z  , &src010, mrcPixelRePart, mrcPixelHowNearest);
+                       mrcPixelDataGet(in, x,   y+1, z+1, &src011, mrcPixelRePart, mrcPixelHowNearest);
+                       mrcPixelDataGet(in, x+1, y,   z  , &src100, mrcPixelRePart, mrcPixelHowNearest);
+                       mrcPixelDataGet(in, x+1, y,   z+1, &src101, mrcPixelRePart, mrcPixelHowNearest);
+                       mrcPixelDataGet(in, x+1, y+1, z  , &src110, mrcPixelRePart, mrcPixelHowNearest);
+                       mrcPixelDataGet(in, x+1, y+1, z+1, &src111, mrcPixelRePart, mrcPixelHowNearest);
+                       switch(mode) { 
+                               case 0: { /* 2x2x1 */
+                                       Gx = fabs(src000 - src011) + fabs(src010 - src001); /* yz-plane */
+                                       Gy = fabs(src000 - src101) + fabs(src001 - src100); /* zx-plane */
+                                       Gz = fabs(src000 - src110) + fabs(src100 - src010); /* xy-plane */
+                                       dst = (Gx + Gy + Gz)/6.0;
+                                       break;
+                               }
+                               case 1: { /* 2x2x2 */
+                                       dst = SQR(src110-src000) + SQR(src100 - src010) /* xy-plane z=0 */
+                                                +SQR(src010-src000) + SQR(src000 - src010) /* yz-plane x=0 */
+                                                +SQR(src101-src000) + SQR(src001 - src100) /* zx-plane y=0 */
+                                            +SQR(src111-src001) + SQR(src101 - src011) /* xy-plane z=1 */
+                                                +SQR(src110-src100) + SQR(src100 - src110) /* yz-plane x=1 */
+                                                +SQR(src111-src010) + SQR(src011 - src110); /* zx-plane y=1 */
+                                       dst /= 12.0;
+                                       break;
+                               }
+                               default: {
+                                       fprintf(stderr, "Not supported mode: %d in lmrcImageEdgeEnhancementRobertsCrossOperatorSQRT\n", mode);
+                                       exit(EXIT_FAILURE);
+                                       break;
+                               }
+                       }
+                       if(0<dst) {
+                               dst = sqrt(dst);
+                       } else {
+                               dst = 0;
+                       }
+                       mrcPixelDataSet(out, x, y, z, dst, mrcPixelRePart);
+               }
+               }
+               }
+       } else { // 2D
+               for(y=0; y<in->HeaderN.y-1; y++) {
+               for(x=0; x<in->HeaderN.x-1; x++) {
+                       mrcPixelDataGet(in, x,   y,   0, &src00, mrcPixelRePart, mrcPixelHowNearest);
+                       mrcPixelDataGet(in, x,   y+1, 0, &src01, mrcPixelRePart, mrcPixelHowNearest);
+                       mrcPixelDataGet(in, x+1, y,   0, &src10, mrcPixelRePart, mrcPixelHowNearest);
+                       mrcPixelDataGet(in, x+1, y+1, 0, &src11, mrcPixelRePart, mrcPixelHowNearest);
+
+                       Gx = src00 - src11;
+                       Gy = src10 - src01;
+
+                       dst = (fabs(Gx) + fabs(Gy))/2.0;
+                       mrcPixelDataSet(out, x, y, 0, dst, mrcPixelRePart);
+
+                       if(linfo->flagDirection) {
+                               dst = atan2(Gy, Gx)*180/M_PI;
+                               mrcPixelDataSet(&(linfo->direction[0]), x, y, 0, dst, mrcPixelRePart);
+                       }
+               }
+               }
+       }
+}
diff --git a/src/Objects/DataManip/mrcImage/src/lmrcImageSobel.c b/src/Objects/DataManip/mrcImage/src/lmrcImageSobel.c
new file mode 100644 (file)
index 0000000..f3d6307
--- /dev/null
@@ -0,0 +1,182 @@
+/*
+# %M% %Y% %I%
+# The latest update : %G% at %U%
+#
+#%Z% lmrcImageSobel ver %I%
+#%Z% Created by 
+#%Z%
+#%Z% Usage : lmrcImageSobel 
+#%Z% Attention
+#%Z%
+*/
+static char __sccs_id[] = "%Z%lmrcImageSobel ver%I%; Date:%D% %Z%";
+
+
+#include <stdlib.h>
+#include "./lmrcImageEdgeEnhancement.h"
+
+void
+lmrcImageEdgeEnhancementSobelOperatorSQRT(mrcImage* out, mrcImage* in, lmrcImageEdgeEnhancementInfo* linfo, int mode)
+{
+       mrcImageParaTypeReal x, y, z;
+       double src00, src01, src02;
+       double src10, src11, src12;
+       double src20, src21, src22;
+       double src000, src001, src002, src010, src011, src012, src020, src021, src022;
+       double src100, src101, src102, src110, src111, src112, src120, src121, src122;
+       double src200, src201, src202, src210, src211, src212, src220, src221, src222;
+       double dst, Gx, Gy, Gz;
+
+
+       lmrcImageEdgeEnhancementPrepare(out, in, linfo, mode);
+
+       if(1<in->HeaderN.z) { // 3D
+               for(z=0; z<in->HeaderN.z; z++) {
+               for(y=0; y<in->HeaderN.y; y++) {
+               for(x=0; x<in->HeaderN.x; x++) {
+                       mrcPixelDataGet(in, x,   y,   z  , &src000, mrcPixelRePart, mrcPixelHowNearest);
+                       mrcPixelDataGet(in, x,   y,   z+1, &src001, mrcPixelRePart, mrcPixelHowNearest);
+                       mrcPixelDataGet(in, x,   y+1, z  , &src010, mrcPixelRePart, mrcPixelHowNearest);
+                       mrcPixelDataGet(in, x,   y+1, z+1, &src011, mrcPixelRePart, mrcPixelHowNearest);
+                       mrcPixelDataGet(in, x,   y,   z  , &src100, mrcPixelRePart, mrcPixelHowNearest);
+                       mrcPixelDataGet(in, x,   y,   z+1, &src101, mrcPixelRePart, mrcPixelHowNearest);
+                       mrcPixelDataGet(in, x,   y+1, z  , &src010, mrcPixelRePart, mrcPixelHowNearest);
+                       mrcPixelDataGet(in, x,   y+1, z+1, &src011, mrcPixelRePart, mrcPixelHowNearest);
+                       switch(mode) { 
+                               case 0: { /* 3x3x1 */
+                                       Gx = (src200 - src000 + 2.0*(src210 - src010) + src220 - src020
+                                            +src200 - src000 + 2.0*(src201 - src001) + src202 - src002)/8.0;
+                                       Gy = (src020 - src000 + 2.0*(src021 - src001) + src022 - src002
+                                            +src020 - src000 + 2.0*(src120 - src100) + src220 - src200)/8.0;
+                                       Gz = (src002 - src000 + 2.0*(src102 - src100) + src202 - src200
+                                            +src002 - src000 + 2.0*(src012 - src010) + src022 - src020)/8.0;
+                                       break;
+                               }
+                               default: {
+                                       fprintf(stderr, "Not supported mode: %d in lmrcImageEdgeEnhancementRobertsCrossOperatorSQRT\n", mode);
+                                       exit(EXIT_FAILURE);
+                                       break;
+                               }
+                       }
+                       dst = SQR(Gx) + SQR(Gy) + SQR(Gz);
+                       if(0<dst) {
+                               dst = sqrt(dst);
+                       } else {
+                               dst = 0;
+                       }
+                       mrcPixelDataSet(out, x, y, z, dst, mrcPixelRePart);
+               }
+               }
+               }
+       } else { // 2D
+               for(y=1; y<in->HeaderN.y-1; y++) {
+               for(x=1; x<in->HeaderN.x-1; x++) {
+                       mrcPixelDataGet(in, x-1, y-1, 0, &src00, mrcPixelRePart, mrcPixelHowNearest);
+                       mrcPixelDataGet(in, x-1, y,   0, &src01, mrcPixelRePart, mrcPixelHowNearest);
+                       mrcPixelDataGet(in, x-1, y+1, 0, &src02, mrcPixelRePart, mrcPixelHowNearest);
+                       mrcPixelDataGet(in, x,   y-1, 0, &src10, mrcPixelRePart, mrcPixelHowNearest);
+                       mrcPixelDataGet(in, x,   y+1, 0, &src12, mrcPixelRePart, mrcPixelHowNearest);
+                       mrcPixelDataGet(in, x+1, y-1, 0, &src20, mrcPixelRePart, mrcPixelHowNearest);
+                       mrcPixelDataGet(in, x+1, y,   0, &src21, mrcPixelRePart, mrcPixelHowNearest);
+                       mrcPixelDataGet(in, x+1, y+1, 0, &src22, mrcPixelRePart, mrcPixelHowNearest);
+               
+                       Gx = (src20 - src00 + 2.0*(src21 - src01) + src22 - src02)/4.0;
+                       Gy = (src02 - src00 + 2.0*(src12 - src10) + src22 - src20)/4.0;
+                       
+                       dst = SQR(Gx) + SQR(Gy);
+                       if(0<dst) {
+                               dst = sqrt(dst);
+                       } else {
+                               dst = 0;
+                       }
+                       mrcPixelDataSet(out, x, y, 0, dst, mrcPixelRePart);
+
+                       if(linfo->flagDirection) {
+                               dst = atan2(Gy, Gx)*180.0/M_PI;
+                               mrcPixelDataSet(&(linfo->direction[0]), x, y, 0, dst, mrcPixelRePart);
+                       }
+               }
+               }
+       }
+}
+
+void
+lmrcImageEdgeEnhancementSobelOperatorABS(mrcImage* out, mrcImage* in, lmrcImageEdgeEnhancementInfo* linfo, int mode)
+{
+       mrcImageParaTypeReal x, y, z;
+       double src00, src01, src02;
+       double src10, src11, src12;
+       double src20, src21, src22;
+       double src000, src001, src002, src010, src011, src012, src020, src021, src022;
+       double src100, src101, src102, src110, src111, src112, src120, src121, src122;
+       double src200, src201, src202, src210, src211, src212, src220, src221, src222;
+       double dst, Gx, Gy, Gz;
+
+
+       lmrcImageEdgeEnhancementPrepare(out, in, linfo, mode);
+
+       if(1<in->HeaderN.z) { // 3D
+               for(z=0; z<in->HeaderN.z; z++) {
+               for(y=0; y<in->HeaderN.y; y++) {
+               for(x=0; x<in->HeaderN.x; x++) {
+                       mrcPixelDataGet(in, x,   y,   z  , &src000, mrcPixelRePart, mrcPixelHowNearest);
+                       mrcPixelDataGet(in, x,   y,   z+1, &src001, mrcPixelRePart, mrcPixelHowNearest);
+                       mrcPixelDataGet(in, x,   y+1, z  , &src010, mrcPixelRePart, mrcPixelHowNearest);
+                       mrcPixelDataGet(in, x,   y+1, z+1, &src011, mrcPixelRePart, mrcPixelHowNearest);
+                       mrcPixelDataGet(in, x,   y,   z  , &src100, mrcPixelRePart, mrcPixelHowNearest);
+                       mrcPixelDataGet(in, x,   y,   z+1, &src101, mrcPixelRePart, mrcPixelHowNearest);
+                       mrcPixelDataGet(in, x,   y+1, z  , &src010, mrcPixelRePart, mrcPixelHowNearest);
+                       mrcPixelDataGet(in, x,   y+1, z+1, &src011, mrcPixelRePart, mrcPixelHowNearest);
+                       switch(mode) { 
+                               case 0: { /* 2x2x1 */
+                                       Gx = (src200 - src000 + 2.0*(src210 - src010) + src220 - src020
+                                            +src200 - src000 + 2.0*(src201 - src001) + src202 - src002)/8.0;
+                                       Gy = (src020 - src000 + 2.0*(src021 - src001) + src022 - src002
+                                            +src020 - src000 + 2.0*(src120 - src100) + src220 - src200)/8.0;
+                                       Gz = (src002 - src000 + 2.0*(src102 - src100) + src202 - src200
+                                            +src002 - src000 + 2.0*(src012 - src010) + src022 - src020)/8.0;
+                                       break;
+                               }
+                               default: {
+                                       fprintf(stderr, "Not supported mode: %d in lmrcImageEdgeEnhancementRobertsCrossOperatorSQRT\n", mode);
+                                       exit(EXIT_FAILURE);
+                                       break;
+                               }
+                       }
+                       dst = fabs(Gx) + fabs(Gy) + fabs(Gz);
+                       if(0<dst) {
+                               dst = sqrt(dst);
+                       } else {
+                               dst = 0;
+                       }
+                       mrcPixelDataSet(out, x, y, z, dst, mrcPixelRePart);
+               }
+               }
+               }
+       } else { // 2D
+               for(y=1; y<in->HeaderN.y-1; y++) {
+               for(x=1; x<in->HeaderN.x-1; x++) {
+                       mrcPixelDataGet(in, x-1, y-1, 0, &src00, mrcPixelRePart, mrcPixelHowNearest);
+                       mrcPixelDataGet(in, x-1, y,   0, &src01, mrcPixelRePart, mrcPixelHowNearest);
+                       mrcPixelDataGet(in, x-1, y+1, 0, &src02, mrcPixelRePart, mrcPixelHowNearest);
+                       mrcPixelDataGet(in, x,   y-1, 0, &src10, mrcPixelRePart, mrcPixelHowNearest);
+                       mrcPixelDataGet(in, x,   y+1, 0, &src12, mrcPixelRePart, mrcPixelHowNearest);
+                       mrcPixelDataGet(in, x+1, y-1, 0, &src20, mrcPixelRePart, mrcPixelHowNearest);
+                       mrcPixelDataGet(in, x+1, y,   0, &src21, mrcPixelRePart, mrcPixelHowNearest);
+                       mrcPixelDataGet(in, x+1, y+1, 0, &src22, mrcPixelRePart, mrcPixelHowNearest);
+               
+                       Gx = (src20 - src00 + 2.0*(src21 - src01) + src22 - src02)/4.0;
+                       Gy = (src02 - src00 + 2.0*(src12 - src10) + src22 - src20)/4.0;
+                       
+                       dst = fabs(Gx) + fabs(Gy);
+                       mrcPixelDataSet(out, x, y, 0, dst, mrcPixelRePart);
+
+                       if(linfo->flagDirection) {
+                               dst = atan2(Gy, Gx)*180.0/M_PI;
+                               mrcPixelDataSet(&(linfo->direction[0]), x, y, 0, dst, mrcPixelRePart);
+                       }
+               }
+               }
+       }
+}
+
index 0b977b1..439662f 100755 (executable)
@@ -128,3 +128,4 @@ WORLDNAME=Tools
 WORLDNAME=Tools
 WORLDNAME=Tools
 WORLDNAME=Tools
+WORLDNAME=Tools
index 465fc1c..bb10309 100755 (executable)
@@ -1,6 +1,7 @@
 # OptionControlFile
 # FileFormat
-"-i","-i[nput]","InputDataFile","Essential","1","1","In","inFile","NULL"
-"-o","-o[utput]","OutputDataFile","Essential","1","1","Out","outFile","NULL"
+"-i","-i[nput]","InputDataFile","Essential","1","1","In","inFile::mrcImage","NULL"
+"-o","-o[utput]","OutputDataFile","Essential","1","1","Out","outFile::mrcImage","NULL"
+"-od","-o[utput]d[irection]","Output: Direction","Optional","1","1","OutDirection","outFile::mrcImage","NULL"
 "-c","-c[onfig]","ConfigurationFile","Optional","1","1","configFile","inFile","NULL"
 "-m","-m[ode]","Mode","Optional","1","1","mode","Integer","0"
index 701690b..174d886 100755 (executable)
@@ -21,6 +21,10 @@ typedef struct mrcImageEdgeEnhancementInfo {
     char* Out;
     FILE* fptOut;
     
+    long flagOutDirection;
+    char* OutDirection;
+    FILE* fptOutDirection;
+    
     long flagconfigFile;
     char* configFile;
     FILE* fptconfigFile;
index cd8cf7f..06dcb23 100755 (executable)
@@ -50,6 +50,17 @@ argCheck(mrcImageEdgeEnhancementInfo* info, int argc, char* argv[])
                     }
                     SBREAK;
                 }
+                SCASE("od") {
+                    if(i+1<argc) {
+                        info->OutDirection = stringGetNthWord(argv[i+1], 1, " ,");
+                        i++;
+                        info->flagOutDirection++;
+                    } else {
+                        usage(argv[0]);
+                        exit(EXIT_FAILURE);
+                    }
+                    SBREAK;
+                }
                 SCASE("c") {
                     if(i+1<argc) {
                         info->configFile = stringGetNthWord(argv[i+1], 1, " ,");
index b1ffbf5..5d025cc 100755 (executable)
@@ -14,6 +14,7 @@ init0(mrcImageEdgeEnhancementInfo* info)
 {
     info->fptIn = NULL;    info->flagIn = 0;
     info->fptOut = NULL;    info->flagOut = 0;
+    info->fptOutDirection = NULL;    info->flagOutDirection = 0;
     info->fptconfigFile = NULL;    info->flagconfigFile = 0;
     info->mode = 0;    info->flagmode = 0;
 }
@@ -41,6 +42,10 @@ init1(mrcImageEdgeEnhancementInfo* info)
         info->fptOut = fileOpen(info->Out, "w");
     }
     
+    if(info->flagOutDirection) {
+        info->fptOutDirection = fileOpen(info->OutDirection, "w");
+    }
+    
     if(info->flagconfigFile) {
         info->fptconfigFile = fileOpen(info->configFile, "r");
     }
index 6b725d2..4869724 100755 (executable)
@@ -18,6 +18,7 @@
 #define DEBUG
 #include "genUtil.h"
 #include "mrcImage.h"
+#include "lmrcImageEdgeEnhancement.h"
 
 /*
 Example:
@@ -35,13 +36,27 @@ typedef enum lmrcImageEdgeEnhancementMode {
 int
 main(int argc, char* argv[]) 
 {
+       mrcImage in;
+       mrcImage out;
        mrcImageEdgeEnhancementInfo info;
+       lmrcImageEdgeEnhancementInfo linfo;
 
        init0(&info);
     argCheck(&info, argc, argv);
     init1(&info);
 
+       
        DEBUGPRINT("Program Start\n");
+       linfo.flagDirection = info.flagOutDirection;
+
+       mrcFileRead(&in, info.In, "in main", 0);
+
+       lmrcImageEdgeEnhancement(&out, &in, &linfo, info.mode);
+
+       mrcFileWrite(&out, info.Out, "in main", 0);
+       if(info.flagOutDirection) {
+               mrcFileWrite(&(linfo.direction[0]), info.OutDirection, "in main", 0);   
+       }
 
        exit(EXIT_SUCCESS);
 }
@@ -50,4 +65,5 @@ void
 additionalUsage()
 {
        fprintf(stderr, "----- Additional Usage -----\n");
+       lmrcImageEdgeEnhancementModePrint(stderr);
 }
diff --git a/src/Tools/mrcImage/mrcImageEdgeEnhancement/src/mrcImageEdgeEnhancement.html b/src/Tools/mrcImage/mrcImageEdgeEnhancement/src/mrcImageEdgeEnhancement.html
new file mode 100644 (file)
index 0000000..c08d3cf
--- /dev/null
@@ -0,0 +1,25 @@
+<HTML>
+<HEAD>
+<TITLE>mrcImageEdgeEnhancement</TITLE>
+</HEAD>
+<BODY>
+<H1>mrcImageEdgeEnhancement</H1>
+<H2>Usage</H2>
+<PRE>
+Usage: mrcImageEdgeEnhancement
+Options:
+    [-i[nput]            In                  (NULL      ).as(inFile::mrcImage    ) ] :Essential :InputDataFile
+    [-o[utput]           Out                 (NULL      ).as(outFile::mrcImage   ) ] :Essential :OutputDataFile
+    [-o[utput]d[irection]OutDirection        (NULL      ).as(outFile::mrcImage   ) ] :Optional  :Output: Direction
+    [-c[onfig]           configFile          (NULL      ).as(inFile              ) ] :Optional  :ConfigurationFile
+    [-m[ode]             mode                (0         ).as(Integer             ) ] :Optional  :Mode
+----- Additional Usage -----
+mode: 2 : Roberts Cross(SQRT)
+mode: 3 : Roberts Cross(ABS)
+mode: 4 : Prewitt(SQRT)
+mode: 5 : Prewitt(ABS)
+mode: 6 : Sobel(SQRT)
+mode: 7 : Sobel(ABS)
+</PRE>
+</BODY>
+</HTML>
index f4d57c7..84a1714 100755 (executable)
@@ -9,8 +9,9 @@
         -Q 1 0 5.25x1+47+0 'Close'
         -I 1 0 1 1 0 1 -1x1+1+1.500000 ' ' 'In' 'InputDataFile' i
         -O 1 0 1 1 0 1 -1x1+1+3.000000 ' ' 'Out' 'OutputDataFile' o
-        -I 1 0 1 0 0 1 -1x1+1+4.500000 ' ' 'configFile' 'ConfigurationFile' c
-        -i 1 0 1 0 0 -1x1+1+6.000000 0 0 0 0 0 'mode' 'Mode' m
+        -O 1 0 1 0 0 1 -1x1+1+4.500000 ' ' 'OutDirection' 'Output: Direction' od
+        -I 1 0 1 0 0 1 -1x1+1+6.000000 ' ' 'configFile' 'ConfigurationFile' c
+        -i 1 0 1 0 0 -1x1+1+7.500000 0 0 0 0 0 'mode' 'Mode' m
     -E
   -E
 -E
diff --git a/src/Tools/mrcImage/mrcImageEdgeEnhancement/src/test/Makefile b/src/Tools/mrcImage/mrcImageEdgeEnhancement/src/test/Makefile
new file mode 100644 (file)
index 0000000..84faa2c
--- /dev/null
@@ -0,0 +1,22 @@
+include ../../Config/Define.inc
+include ../../../Config/Define.inc
+include ../../../../Config/Define.inc
+include ../../../../../Config/Define.inc
+
+all: help exec
+
+help:
+       @echo "----- Help Message Check -----"
+       @../$(OSTYPE)/$(OBJECTNAME)      -h
+
+exec:
+       @echo "----- Execution Check -----"
+       ../$(OSTYPE)/$(OBJECTNAME) -i data/Lighthouse.mrc -o data/Lighthouse.edge.2 -m 2
+       ../$(OSTYPE)/$(OBJECTNAME) -i data/Lighthouse.mrc -o data/Lighthouse.edge.3 -m 3 
+       ../$(OSTYPE)/$(OBJECTNAME) -i data/Lighthouse.mrc -o data/Lighthouse.edge.4 -m 4 
+       ../$(OSTYPE)/$(OBJECTNAME) -i data/Lighthouse.mrc -o data/Lighthouse.edge.5 -m 5 
+       ../$(OSTYPE)/$(OBJECTNAME) -i data/Lighthouse.mrc -o data/Lighthouse.edge.6 -m 6 
+       ../$(OSTYPE)/$(OBJECTNAME) -i data/Lighthouse.mrc -o data/Lighthouse.edge.7 -m 7  
+       @echo "----- Calc check -----"          
+
+clean:
diff --git a/src/Tools/mrcImage/mrcImageEdgeEnhancement/src/test/data b/src/Tools/mrcImage/mrcImageEdgeEnhancement/src/test/data
new file mode 120000 (symlink)
index 0000000..2353a80
--- /dev/null
@@ -0,0 +1 @@
+../../../../../..//data/mrcImageEdgeEnhancement
\ No newline at end of file
index c3e4fc6..564c98a 100755 (executable)
@@ -7,8 +7,9 @@ usage(char* thisProgram)
 {
     fprintf(stderr, "Usage: %s\n", thisProgram);
     fprintf(stderr, "Options:\n");
-    fprintf(stderr, "    [-i[nput]            In                  (NULL      ).as(inFile              ) ] :Essential :InputDataFile\n");
-    fprintf(stderr, "    [-o[utput]           Out                 (NULL      ).as(outFile             ) ] :Essential :OutputDataFile\n");
+    fprintf(stderr, "    [-i[nput]            In                  (NULL      ).as(inFile::mrcImage    ) ] :Essential :InputDataFile\n");
+    fprintf(stderr, "    [-o[utput]           Out                 (NULL      ).as(outFile::mrcImage   ) ] :Essential :OutputDataFile\n");
+    fprintf(stderr, "    [-o[utput]d[irection]OutDirection        (NULL      ).as(outFile::mrcImage   ) ] :Optional  :Output: Direction\n");
     fprintf(stderr, "    [-c[onfig]           configFile          (NULL      ).as(inFile              ) ] :Optional  :ConfigurationFile\n");
     fprintf(stderr, "    [-m[ode]             mode                (0         ).as(Integer             ) ] :Optional  :Mode\n");
     additionalUsage();