OSDN Git Service

Modified Eos/Makefile
[eos/hostdependX86LINUX64.git] / src / Objects / DataManip / mrcImage / src / lmrcImageDilation.c
1 /*
2 # %M% %Y% %I%
3 # The latest update : %G% at %U%
4 #
5 #%Z% lmrcImageDilation ver %I%
6 #%Z% Created by 
7 #%Z%
8 #%Z% Usage : lmrcImageDilation 
9 #%Z% Attention
10 #%Z%
11 */
12 static char __sccs_id[] = "%Z%lmrcImageDilation ver%I%; Date:%D% %Z%";
13
14 #include "../inc/mrcImage.h"
15 #include "lmrcImageMorphology.h"
16
17 void
18 lmrcImageDilation(mrcImage* dst, mrcImage* src, lmrcImageMorphologyInfo linfo, int mode)
19 {
20         int bx, by, bz;
21         int rbx, rby, rbz;
22         int x, y, z;
23         double data, data2;
24         double se;
25
26         dst->Header = src->Header;
27         mrcInit(dst, NULL);
28
29         for(z=0; z<dst->HeaderN.z; z++) {
30         for(y=0; y<dst->HeaderN.y; y++) {
31         for(x=0; x<dst->HeaderN.x; x++) {
32                 mrcPixelDataSet(dst, x, y, z, src->HeaderAMin, mrcPixelRePart);
33         }
34         }
35         }
36
37         for(bz=0; bz<linfo.SE.HeaderN.z; bz++) {
38         for(by=0; by<linfo.SE.HeaderN.y; by++) {
39         for(bx=0; bx<linfo.SE.HeaderN.x; bx++) {
40                 mrcPixelDataGet(&linfo.SE, bx, by, bz, &se, mrcPixelRePart, mrcPixelHowNearest);
41                 if(0!=se) {
42                         rbx = bx + linfo.SE.HeaderStartN.x;
43                         rby = by + linfo.SE.HeaderStartN.y;
44                         rbz = bz + linfo.SE.HeaderStartN.z;
45                         for(z=0; z<dst->HeaderN.z; z++) {
46                         for(y=0; y<dst->HeaderN.y; y++) {
47                         for(x=0; x<dst->HeaderN.x; x++) {
48                                 mrcPixelDataGet(src, x+rbx, y+rby, z+rbz, &data,   mrcPixelRePart, mrcPixelHowNearest);
49                                 mrcPixelDataGet(dst, x,     y,     z,     &data2,  mrcPixelRePart, mrcPixelHowNearest);
50                                 if(data2<se*data) {
51                                         mrcPixelDataSet(dst, x,     y,     z,  se*data, mrcPixelRePart);
52                                 } 
53                         }
54                         }
55                         }
56                 }
57         }
58         }
59         }
60 }
61