the invention will be described in connection with its preferred embodiments . however , to the extent that the following detailed description is specific to a particular embodiment or a particular use of the invention , this is intended to be illustrative only , and is not to be construed as limiting the scope of the invention . on the contrary , it is intended to cover all alternatives , modifications , and equivalents that are included within the spirit and scope of the invention , as defined by the appended claims . the present inventive method is applied to a 3 - d seismic data volume for a selected seismic attribute . for example , the attribute could be acoustic impedance , and the impedance values might be obtained by inverting seismic data . alternatively , the data volume might be values of the seismic amplitudes themselves , and the terms “ seismic attribute ” or “ attribute ” as used herein will be understood to be broad enough to encompass this . however , the selected attribute may be discontinuity ( trace - to - trace correlation ) or any other attribute besides amplitude or impedance that can be defined on a point - by - point or cell - by - cell basis . fig1 a , 1 b , and 1 c present two versions of seismic displays from a single cross section extracted from a 3 - d seismic data volume . the variable intensity amplitude display in fig1 a gives a gray shade value to each voxel ranging from positive maxima ( peaks ) shown in black , e . g ., peak 10 , to minima ( troughs ) shown in white , e . g ., trough 12 . fig1 b and 1c show selected sub - areas of fig1 a in wiggle trace displays in which each seismic trace is represented by a continuous spline curve . the two display styles illustrate the differences in the models of the subsurface used by conventional seed detection and that of the present invention . purely cell - based seed detection algorithms treat the subsurface much like the pixilated display of fig1 a in which the fundamental units are voxels ( 3 - d pixels with x , y , z coordinates and an attribute value ). in such algorithms it is only the connectivity of the voxels that matters . using gray shades or , more typically , color displays on a workstation , the human eye readily discerns that the voxel attributes are not randomly distributed , but organized into discrete layers representing changes in subsurface acoustic properties . however , cell - based seed detection algorithms do not recognize this structure . each cell is considered separately and connectivity analysis is a simple matter of checking the attribute values of immediately adjoining voxels to see if they fall within the user - defined thresholds . the wiggle trace displays seen in fig1 b and 1c emphasize the attributes and geometries of reflections rather than voxels . such features has lateral change in attribute value ( e . g ., the amplitude change between points 12 a and 12 b in fig1 b ) and cycle splitting where one reflection splits into two ( e . g ., the cycle split between point 12 c , and points 12 d and 12 e in fig1 c ) can be seen in either display , but the wiggle trace display makes them more visible . the present inventive method blends the voxel - based and reflection - based approaches to achieve rapid seed detection that is stratigraphically consistent ( i . e ., that honors stratigraphic layering ). fig2 a , 2 b , and 2 c illustrate the differences between conventional seed detection and the present method when applied to the same 3 - d seismic data volume . the amplitude cross section shown in fig1 a is repeated in fig2 a with a small polygon 20 marking the position of a geobody that was detected by the conventional method as a part of a much larger body ( fig2 b ) and as a distinct body by the present method ( fig2 c ). the same amplitude thresholds were used for both runs . thresholds were selected to capture voxels with moderately negative values . conventional seed detection picked a single large body containing over 8 million voxels after starting from a single seed point . fig2 b shows a cross section of the 3 - d seismic data volume showing picked voxels in black . although fig2 b appears to show more than one large body , in the actual 3 - d seismic data volume all of the 8 million voxels were connected . compare this result to the cross section generated by the present invention shown in fig2 c . using the present method and selecting for troughs , the run resulted in 96 bodies being selected containing a total of approximately 800 , 000 voxels . the single , large body picked by conventional seed detection ( fig2 b ) resulted in part from the “ bleeding ” of the region - growing algorithm along the top and bottom edges of high amplitude trough reflections . for example , in fig2 b , the black voxels labeled 12 f and 12 g represent the top and bottom edges , respectively , of trough 12 of fig2 a . these edge voxels are not significant measures of subsurface geology . they merely represent the transitions between significant events ( peaks and troughs ). nevertheless , because their amplitudes fall into the specified attribute range , conventional seed detection picked these voxels . the present method ( fig2 c ) has “ stratigraphic awareness ,” in that it grows regions of connected voxels within discrete layers ( reflections in this case ). the method is able to pick numerous separate bodies because it is a bulk method that accepts any viable seed point in the data volume as a starting point for region growing . only those regions that grow beyond minimum body size are eventually accepted , however . note the body cross section 20 in fig2 c is also present in fig2 b where it represents one small part of the large body . the differences between the two methods are not as great when thresholds are set to accept only extreme values of attributes ( positive or negative ), but when it comes to picking bodies with moderate or low amplitudes , the “ edge bleeding ” problem of conventional seed detection renders it virtually useless . fig3 a and 3b complete the comparison of conventional seed detection and seed detection according to the present invention by showing two map view 3 - d slices , each 5 voxels thick . note the pervasive , amorphous character of the black selected region in fig3 a ( conventional seed detection ) as compared to the discrete bodies ( gray shades ) picked by stratigraphic seed detection according to the present invention in fig3 b . the body 30 picked by the present inventive method ( see fig3 b ) is also present in fig3 a , but is very difficult to identify due to the surrounding black voxels . seed detection within a stratigraphic context requires that the detection algorithm take into account the organization of seismic data into reflections ( or layering in other types of attributes ). fig4 through 7 and 11 through 13 illustrate possible techniques used by the present inventive method to perform stratigraphic seed detection . for illustrative purposes , fig4 through 7 and 11 through 13 are configured to show seed detection for troughs ( negative amplitudes ). however , the present invention may easily be configured to detect peaks ( positive amplitudes ) and the detection of both troughs and peaks is within the scope of the invention . fig4 illustrates the classification of a seismic wiggle trace 40 into acceptable and unacceptable segments based on the logic used in the present invention . also shown in fig4 is a stack of voxels 42 representing the attribute values of the wiggle trace at the corresponding discrete sample points . each voxel is marked as accepted or rejected , as follows . troughs with minima greater than threshold t 1 and less than threshold t 2 are the targeted events . in addition to the attribute threshold criteria , preferably there are trace segment length requirements . from top to bottom there are five troughs 43 through 47 shown in fig4 . the first trough 43 is accepted , but the number of constituent voxels exceeds the user set limit and the segment is trimmed to the limit symmetrically about the minimum . in other words , voxels 43 a are accepted , while voxels 43 b are trimmed . the second trough 44 is rejected because its minimum exceeds the t 1 cut off . trough 45 is rejected as it does not meet the trace length minimum . trough 46 is accepted without alteration . finally , trough 47 is rejected as its minimum point is greater than t 2 . thus , application of the logic used in the present invention to trace 40 results in acceptance of the four voxels labeled 46 a and the eight voxels labeled 43 a , and rejection of all other voxels . the attribute thresholds t 1 and t 2 can be set to any reasonable value as long as t 1 & lt ; t 2 . placement of the thresholds is independent of the zero attribute line so that the user can target troughs made up of positive attributes or conversely , peaks that occur on the negative side of the zero line . breaking the trace into peaks and troughs is accomplished by searching for inflection points where the change in vertical attribute gradient is zero and there is no change in the gradient &# 39 ; s sign ( the latter condition rules out local minima or maxima ). fig5 graphically depicts the use of inflection points to break a trace 50 into peaks and troughs . in this case the number of voxels accepted is determined by the position of the inflection points 52 which bound a seismic trough . in other cases the number of acceptable voxels may be determined by the maximum trace length condition or by the threshold t 2 if either one is reached before the inflection point ( s ). fig4 and 5 explain the criteria for acceptance or rejection of voxels in trace segments , but they do not cover the method for growing a body laterally from trace to trace . this trace to trace jumping or “ bleeding ” is the source of many problems for conventional seed detection as witnessed by the detection of the one large body in fig2 b and 3a . the present invention takes advantage of constraints provided by the reflections ( or local maxima or minima in data other than seismic amplitude ) to prevent runaway bleeding of the seed detection . lateral propagation of a body from one trace to an adjacent trace is only allowed at the peak or trough position . at the beginning of the run the user selects the maximum allowable vertical offset between adjacent peaks or troughs ( hereinafter referred to as “ jump_max ”). in another embodiment the jump_max limit is spatially variable and derived from calculations of regional stratigraphic dip . fig6 illustrates how the seismic object is allowed to grow laterally when the trough &# 39 ; s vertical offset between traces is less than or equal the jump_max setting . lateral body growth in a given direction terminates when the vertical offset between traces exceeds jump_max . fig6 shows seven adjacent traces 60 through 66 . troughs 60 a through 66 a are marked . the maximum allowable vertical offset ( jump_max ) is set to one . using this criterion , the seismic object is allowed to grow from trace 60 laterally to trace 63 . the seismic object is not permitted to grow to trace 64 because the vertical offset between troughs 63 a and 64 a exceeds the maximum allowable vertical offset . minimization of body growth across stratigraphic and structural boundaries is a key benefit of the present invention . when seed detection algorithms allow unrestrained growth , geologically unreasonable bodies can result where a body overlies itself in a spiral pattern , as illustrated by body 70 in fig7 a . in addition to the limits on trace to trace lateral growth ( jump_max ) the present invention also limits vertical growth by use of an x - y map ( fig7 b ). bodies are not permitted to overlie themselves ( i . e ., a single seismic object may not include more than one discrete segment of any single seismic data trace ), and vertically overlapping areas ( e . g ., area 70 a in fig7 b ) are split into separate bodies ( area 70 b in fig7 b is distinct from area 70 a ). the present invention is capable of being applied manually . however , due to the large size of most 3 - d seismic data volumes , the present inventive method preferably is practiced automatically using a suitably programmed digital computer . fig8 to 10 are flowcharts illustrating the primary steps of one computer program for practicing the present invention , and tables 1 to 3 describe , respectively , the major functions , input controls , and variables used in the program . it will be understood that other computer programs for practicing the present invention could be developed by persons skilled in the art without departing from the true scope of the present invention . it will be understood that the specification of values for the input controls will depend such factors as frequency content of the data , the type of bodies expected or desired to extract , or other , and that iteration will be required by a person skilled in the art when analyzing a typical data set . fig8 shows the computer program &# 39 ; s main loop 800 . since every cell in the seismic data volume is a potential seed point , the main loop preferably is applied to every ( x , y , z ) cell in the data volume . at step 802 , an initial x , y , z cell is selected . preferably , this initial cell is the 0 , 0 , 0 cell ; however , any other cell in the data volume may be used as the starting point , if desired . at step 804 , the x - y map for the seismic data volume is cleared . the map function is used to track the x - y position of each voxel analyzed and to ensure that no body overlies itself . at step 806 , the body size is set to zero . the body size function is used to keep track of the size of growing bodies . at step 808 , subroutine grow ( described in detail below in connection with fig9 ) is called to attempt to grow a body from the selected x , y , z seed point . at step 810 , the size ( i . e ., number of included voxels ) of each body returned by grow is checked . if the size of a body is greater than the user - defined minimum body size and less than the user - defined maximum body size , then the body is saved at step 812 . if not , the body is discarded . the program then proceeds to step 814 which checks whether all x , y , z cells in the seismic data volume have been analyzed . if so , the program ends . if not , the program proceeds to step 816 where a new x , y , z cell is picked and steps 804 through 814 are repeated . fig9 illustrates the program execution flow for the subroutine grow . this function takes an initial x , y , z point and attempts to grow a body in all directions . multi - directional growing is accomplished by recursion . recursion involves having the function repeatedly call itself until all avenues of expansion are blocked by the voxel acceptance criteria . fig9 illustrates the case where the user has selected troughs for detection . the user can also select positive events ( peaks in amplitude data ) for detection . grow begins with step 902 where the subroutine checks if the cell has been previously visited . the program flow diverts back to the main loop ( step 930 ) if the cell has already been checked . if it is a new cell , it is marked as visited in step 904 and the subroutine flow proceeds . at step 906 a map held in memory is checked to see if the x - y position has already been added to the body in an earlier pass through grow . if the check_map step yields a positive answer then the cell is rejected ( detected bodies are not permitted to overlie themselves ). otherwise the map is logged as visited in step 908 and flow continues to step 910 where the voxel is analyzed to see if its attribute value lies outside of the user specified thresholds . attribute values outside of the desired threshold cause the voxel to be rejected , whereas a valid value passes the voxel on to step 912 which calls another subroutine , chckvrt ( discussed below in connection with fig1 ), to find the limits of the peak or trough in the specified trace . chckvrt is actually called twice , once with a search direction value of − 1 ( search upward ) and once with offset equal to + 1 ( search downward ). if chckvrt returns a valid trace , the flow continues to step 916 where the program checks the vertical change of the maximum ( for peaks ) or minimum ( troughs ) valued voxel from the previous trace . if the vertical offset is within the user specified allowable range ( jump_max ) grow execution continues . step 918 verifies that the trace has at least the minimum number of valid voxels for inclusion in the body . if the trace has a greater number of valid voxels than that specified by the user , the excess voxels are trimmed from the trace in step 922 , which removes extra voxels symmetrically from the top and base of the trace . preferably , in practice the user would set the maximum allowable trace length based on the wavelength of one - half cycle ( peak or trough ) of the input seismic survey . step 924 adds the accepted voxels to the total of the growing body that is subsequently saved to a data structure in memory in step 926 . step 928 recursively calls subroutine grow in an effort to expand the body in four directions within the plane containing the current voxel . program flow returns to the main loop in step 930 . in step 912 , grow calls another function , chckvrt ( see fig1 ), that analyzes the given trace segment vertically to search for inflection points and local minima and maxima . as illustrated in fig1 , chckvrt is configured to detect troughs . persons skilled in the art could easily modify this subroutine to detect peaks . in fact , the present inventive method can detect either peaks or trough - based on user input controls . chckvrt determines the number of voxels in a given trace that will be assigned to the body . in fig1 , chckvrt begins with step 1002 where the new trace &# 39 ; s length value is initialized . steps 1004 and 1008 verify that the voxel lies within the desired attribute range . if the voxel fails the minimum attribute test in step 1004 then the trace is rejected in step 1006 and program flow returns to subroutine grow . if the voxel within the trace segment is greater than the minimum t 2 threshold , the search stops and the voxels accepted up until that point are returned as valid ( steps 1008 and 1014 ). at step 1010 the program flow is directed down one of two paths depending on the search direction . the subsequent steps ( 1012 a – 1022 a ) are followed when the search direction is upward whereas steps ( 1012 b – 1022 b ) are used when searching downward . the search direction is specified by the parameter dir on entry to the subroutine . the following description applies to the upward directed search , but it also applies to the downward path with the proviso that the inequality signs in 1012 b and 1016 b are reversed from 1012 a and 1016 a to account for the opposite search direction . if the voxel attribute is in the specified attribute range , chckvrt compares the vertical attribute gradient at the current position ( current voxel &# 39 ; s values minus previous voxel &# 39 ; s value ) to the gradient calculated in the previous pass through subroutine chkvrt ( step 1012 a ). if the current gradient is less than the previous gradient the subroutine has detected an inflection point ( a transition from trough to peak in this case ). inflection point detection causes the subroutine to accept the trace and return to subroutine grow in step 1014 . if no inflection point is detected , then program flow continues to step 1016 a where the voxel is checked to see if it is a local extreme ( minimum for troughs or maximum for peaks ). if the voxel is an extreme value within the trace segment the vertical position of the voxel is recorded in the z_max variable ( step 1018 a ). in step 1020 a chckvrt saves the voxel to the growing body and then moves to step 1022 a to increment the vertical position of the counter before running through steps 1004 – 1022 a again . chckvrt execution is complete when the trace segment has been searched up and down and the limits of the event ( inflection points of the peak or trough ) have been found and / or one or more voxels have been rejected based on threshold constraints . in an alternate embodiment , the present invention may be used to determine the size of the geobody surrounding a specified seed point . in this embodiment , the user selects a seed point of interest within a 3d cube . the grow subroutine is then used to attempt to grow a geobody from the specified seed point based on specified stratigraphic criteria , as described above . the present invention includes three additional methods for controlling trace - to - trace ( lateral ) geobody growth . the first of these is illustrated in fig1 a and b . as shown in fig1 a , in conventional seed detection , lateral growth ( as shown by arrows 112 ) may take place from any previously selected set of voxels 110 to any laterally adjacent set of voxels 114 that meets the acceptance criteria . this approach may result in bifurcation of the geobody as voxels from more than one event are accepted ( voxel 115 in fig1 a ). in the present invention , as shown in fig1 b , lateral growth ( as shown by arrow 117 ) only takes place from the local maximum or minimum valued voxel 116 to the next local maximum or minimum valued voxel 118 . the use of this technique allows lateral growth to be controlled by checking the amount of vertical offset of the peak or trough event ( see fig6 ). in this example , the vertical offset from one minimum valued voxel to the next minimum valued equals one voxel ( from voxel 120 to voxel 118 in fig1 b as shown by arrow 119 ). as shown in fig1 , the second method to control geobody growth allows the user to target events in which the local minimum or maximum may not occur at the midway point in two way time ( or depth ) between inflection points 123 . fig1 presents a case where the user has targeted a “ top weighted event ” 127 . a “ top weighted event ” occurs when the local minimum or maximum occurs in the upper half of an event bounded by two inflection points 123 . the present invention allows lateral growth , ( as shown by arrow 121 ) to occur as long as the user selected event asymmetry criteria are met . when the event does not meet these criteria , growth in that direction is terminated as shown in fig1 when the wavelet becomes symmetrical at 129 . for example , a user may select a top , symmetrical , or bottom weighted event that may be correlated to a subsurface parameter of interest ( i . e . porosity ). the correlation of seismic reflection shape to a parameter of interest may be obtained from subsurface well control . therefore , the symmetry of a seismic wavelet can be used as an indicator of the spatial distribution of a parameter of interest . a parameter of interest may include but is not limited to the net - to - gross reservoir , porosity , fluid type and saturation , lithology , facies , and pore pressure . if the shape of the wavelet is correlated to a parameter of interest , the user may estimate the spatial distribution of parameter of interest throughout a seismic survey by extrapolation of the correlated trace shape . the third technique employed by the present invention to control lateral body growth employs a trace - to - trace statistical correlation as an acceptance or rejection criteria . this technique is based on a previously patented method for imaging discontinuities in seismic data ( u . s . pat . no . 6 , 516 , 274 ). as shown in fig1 a , in this technique the user selects a correlation window ( or time window ) 130 . the correlation window need not be in the same length as the thickness of the growing geobody . data from the correlation window is used to select adjacent sets of voxels for correlation as shown in fig1 a . the attribute values of the selected voxels from the source trace 131 and the target trace 132 are cross correlated and a correlation coefficient is calculated ( 133 in fig1 b ). at step 135 , the correlation value is statistically compares to the cutoff ( selected by the user ). at step 139 , if the traces are deemed to be similar enough ( meets the user cutoff ) the body is allowed to grow to the next trace . step 137 is reached if the traces are deemed not to be similar enough ( correlation coefficient is less than the cutoff ) and the body is not allowed to grow to the next trace . the foregoing description is directed to particular embodiments of the present invention for the purpose of illustrating the invention . however , it should be understood that the invention is not to be unduly limited to the foregoing . various modifications and alterations will be apparent to persons skilled in the art without departing from the true scope of the invention , as defined in the appended claims .