The exemplary embodiments relate to methods and systems for generating maps of agricultural blocks within, for example, orchards or vineyards.
Typically, blocks of trees within orchards include groups of trees planted in straight rows. Within each block, the distance between adjacent rows (known as the “row gap” or “row span”) is constant and the distance between each tree within a row (known as the “tree span”) is constant. To analyze and evaluate the quality of operations within an orchard (for example, to detect errors in the behavior of a tractor that is spraying pesticides), it may be desirable to build a map of such blocks.
In an embodiment, a method for generating an agricultural block map includes receiving input data regarding an agricultural block, the input data including a row span, a tree span, a block heading, at least one image of the block, and at least one location sample obtained at a location in a row within the block; performing image recognition on the at least one image to identify lines within the at least one image; identifying at least one polygon within the block based on the lines within the at least one image; and generating rows within each polygon based on the row heading, the row spacing, and the at least one location sample.
In an embodiment, a method for detecting lines within an image of an agricultural block includes performing thresholding on the block image; converting the block image to a grayscale image based on the thresholding; performing additional thresholding on the grayscale image; converting the grayscale image to a binary image based on the additional thresholding; smoothing the binary image to generate a smoothed binary image; detecting at least one line within the binary image; analyzing a vector of a parametric line equation of each of the at least one line; sorting the at least one line by Y-intercept; and filtering the at least one line by proximity.
In some embodiments, a method includes receiving input data regarding an agricultural block, wherein the input data includes a row span of the agricultural block, a tree span of the agricultural block, a block heading of the agricultural block, at least one image of the agricultural block, and at least one location sample obtained at a location in a row within the agricultural block; performing image recognition on the at least one image of the agricultural block to identify lines within the at least one image of the agricultural block; identifying at least one polygon within the agricultural block based on the lines within the at least one image of the agricultural block; and identifying map rows within each of the at least one polygon.
In some embodiments, the step of performing image recognition on the at least one image of the agricultural block to identify lines within the at least one image of the agricultural block includes sub-steps of performing thresholding on the at least one image; converting the at least one image to at least one grayscale image based on the thresholding; performing additional thresholding on the at least one grayscale image; converting the at least one grayscale image to at least one binary image based on the additional thresholding; smoothing the at least one binary image to generate at least one smoothed binary image; detecting at least one line within the at least one smoothed binary image; analyzing a vector of a parametric line equation of each of the at least one line; sorting the at least one line by Y-intercept; and filtering the at least one line by proximity.
In some embodiments, a threshold for the step of performing thresholding on the at least one image is calculated using Otsu's method. In some embodiments, the step of converting the at least one image to at least one grayscale image is performed using an averaging process, a desaturation process, or a decomposition process. In some embodiments, the step of performing additional thresholding on the at least one grayscale image is performed using clustering-based thresholding or Otsu's method. In some embodiments, the step of smoothing the at least one binary image to generate at least one smoothed binary image is performed using Gaussian blurring. In some embodiments, the step of detecting at least one line within the at least one smoothed binary image is performed using (a) a voting scheme, (b) a morphologic method including steps of dilation, erosion, and dilation, or (c) a Hough transform algorithm. In some embodiments, the step of filtering the at least one line by proximity is performed based on at least the row span.
In some embodiments, the step of identifying at least one polygon within the agricultural block based on the lines within the at least one image of the agricultural block is performed by a process that includes tracing a path around each of the at least one polygon.
In some embodiments, the step of identifying map rows within each of the at least one polygon is performed based on at least based on the row heading of the agricultural block, the row spacing of the agricultural block, and the at least one location sample obtained at the location in the row within the agricultural block.
In some embodiments, a method also includes generating a tree-level map of the agricultural block. In some embodiments, the step of generating the tree-level map of the agricultural block is performed by generating a tree-level map for each of the at least one polygon within the agricultural block. In some embodiments, the step of generating a tree-level map for each of the at least one polygon within the agricultural block includes: generating a plurality of lines of trees within each of the at least one polygon; generating a first tree location of each one of the plurality of lines at an intersection of the each one of the plurality of lines and a boundary of the polygon in which the each one of the plurality of lines is located; and generating subsequent tree locations along the each one of the plurality of lines based on the first tree location and the tree span. In some embodiments, the plurality of lines of trees is generated based on assuming that a line of trees exists between each pair of adjacent rows within each of the at least one polygon. In some embodiments, the plurality of lines of trees is further generated based on assuming that a line of trees exists between each boundary of the at least one polygon and a one of the rows that is adjacent to each boundary of the at least one polygon.
Embodiments of the present invention, briefly summarized above and discussed in greater detail below, can be understood by reference to the illustrative embodiments of the invention depicted in the appended drawings. It is to be noted, however, that the appended drawings illustrate only typical embodiments of this invention and are therefore not to be considered limiting of its scope, for the invention may admit to other equally effective embodiments.
To facilitate understanding, identical reference numerals have been used, where possible, to designate identical elements that are common to the figures. The figures are not drawn to scale and may be simplified for clarity. It is contemplated that elements and features of one embodiment may be beneficially incorporated in other embodiments without further recitation.
Among those benefits and improvements that have been disclosed, other objects and advantages of this invention can become apparent from the following description taken in conjunction with the accompanying figures. Detailed embodiments of the present invention are disclosed herein; however, it is to be understood that the disclosed embodiments are merely illustrative of the invention that may be embodied in various forms. In addition, each of the examples given in connection with the various embodiments of the present invention is intended to be illustrative, and not restrictive.
Throughout the specification, the following terms take the meanings explicitly associated herein, unless the context clearly dictates otherwise. The phrases “in one embodiment” and “in some embodiments” as used herein do not necessarily refer to the same embodiment(s), though it may. Furthermore, the phrases “in another embodiment” and “in some other embodiments” as used herein do not necessarily refer to a different embodiment, although it may. Thus, as described below, various embodiments of the invention may be readily combined, without departing from the scope or spirit of the invention. Further, when a particular feature, structure, or characteristic is described in connection with an implementation, it is submitted that it is within the knowledge of one skilled in the art to affect such feature, structure, or characteristic in connection with other implementations whether or not explicitly described herein.
The term “based on” is not exclusive and allows for being based on additional factors not described, unless the context clearly dictates otherwise. In addition, throughout the specification, the meaning of “a,” “an,” and “the” include plural references. The meaning of “in” includes “in” and “on.”
The material disclosed herein may be implemented in software or firmware or a combination of them or as instructions stored on a machine-readable medium, which may be read and executed by one or more processors. A machine-readable medium may include any medium and/or mechanism for storing or transmitting information in a form readable by a machine (e.g., a computing device). For example, a machine-readable medium may include read only memory (ROM); random access memory (RAM); magnetic disk storage media; optical storage media; flash memory devices; electrical, optical, acoustical or other forms of propagated signals (e.g., carrier waves, infrared signals, digital signals, etc.), and others.
In another form, a non-transitory article, such as a non-transitory computer readable medium, may be used with any of the examples mentioned above or other examples except that it does not include a transitory signal per se. It does include those elements other than a signal per se that may hold data temporarily in a “transitory” fashion such as RAM and so forth.
As used herein, the terms “computer engine” and “engine” identify at least one software component and/or a combination of at least one software component and at least one hardware component which are designed/programmed/configured to manage/control other software and/or hardware components (such as the libraries, software development kits (SDKs), objects, etc.).
Examples of hardware elements may include processors, microprocessors, circuits, circuit elements (e.g., transistors, resistors, capacitors, inductors, and so forth), integrated circuits, application specific integrated circuits (ASIC), programmable logic devices (PLD), digital signal processors (DSP), field programmable gate array (FPGA), logic gates, registers, semiconductor device, chips, microchips, chip sets, and so forth. In some embodiments, the one or more processors may be implemented as a Complex Instruction Set Computer (CISC) or Reduced Instruction Set Computer (RISC) processors; x86 instruction set compatible processors, multi-core, or any other microprocessor or central processing unit (CPU). In various implementations, the one or more processors may be dual-core processor(s), dual-core mobile processor(s), and so forth.
Examples of software may include software components, programs, applications, computer programs, application programs, system programs, machine programs, operating system software, middleware, firmware, software modules, routines, subroutines, functions, methods, procedures, software interfaces, application program interfaces (API), instruction sets, computing code, computer code, code segments, computer code segments, words, values, symbols, or any combination thereof. Determining whether an embodiment is implemented using hardware elements and/or software elements may vary in accordance with any number of factors, such as desired computational rate, power levels, heat tolerances, processing cycle budget, input data rates, output data rates, memory resources, data bus speeds and other design or performance constraints.
One or more aspects of at least one embodiment may be implemented by representative instructions stored on a machine-readable medium which represents various logic within the processor, which when read by a machine causes the machine to fabricate logic to perform the techniques described herein. Such representations, known as “IP cores” may be stored on a tangible, machine readable medium and supplied to various customers or manufacturing facilities to load into the fabrication machines that make the logic or processor.
In some embodiments, an agricultural block map may include roads within a block as well as trails that are located between rows of trees. Ideally, each block would include only rows of trees of even spacing; in such a situation, once a point (e.g., identified by latitude and longitude) has been located at the middle of one row, a point in an adjacent row can be located simply by “jumping” in the direction of the next row by the row gap, and the point at this location would be at the center of the next row. However, one technological problem in the agricultural field is that a typical actual orchard also would include trail(s) and/or road(s) having width(s) that is/are higher and/or lower than a particular row span, causing such “jumping” not to arrive at the correct location.
As discussed above, standard techniques for generating block maps by “jumping” row locations based solely on row span present an agri-technological challenge due to the deficiency of, for example, not properly accounting for the presence of roads and/or other landscape-related imperfections within blocks. As detailed below, the exemplary embodiments of the present disclosure provide various technological solutions to solve at least the above identified agri-technological problem such as performing analysis of an image of a block to identify the locations of internal roads before using row span to identify the locations of roads.
Therefore, in an exemplary embodiment, the present disclosure provides one technological solution based at least in part on a mapping process that involves construction of smaller polygons within a larger polygon defining a main block. In such embodiment, the smaller polygons are surrounded by the boundaries of the block and trails or rows within the block. Such an embodiment, as another technological solution, may also utilize image recognition to detect trees and trails, location samples taken from tractors that are driving along the trails so as to define locations that are trails rather than trees, and inputs such as row span, tree span, and row heading (e.g., rows may be oriented east-west, northeast-southwest, etc.).
Continuing to refer to
Continuing to refer to
Continuing to refer to
Continuing to refer to
Following step 360, the “postprocessing” stage begins. In some embodiments, postprocessing may be performed in order to eliminate duplicate lines. For example, in some cases, the Hough transform algorithm may return several parallel lines, each such line spaced a couple of pixels away from the next, and all such lines may correspond to a single wide road; in such cases, postprocessing would eliminate such duplicates. In step 370, as another technological solution, the vectors of the parametric linear line equations are analyzed and grouped. In some embodiments, this step involves identifying the vector (e.g., orientation) of each detected line. In some embodiments, lines having the same heading are grouped with one another. In step 380, the calculated lines are sorted by Y-intercept by their intersection with a defined Y-axis). Accordingly, such lines will be ordered as the closest to the block boundary, the second closest to the block boundary, etc. In step 390, the lines are filtered by closeness to one another. In some embodiments, all lines from any given group (i.e., lines that have been grouped based on vector in step 370) are reviewed in order of Y-intercept (i.e., as determined in step 380) and all lines that any line that is less than a threshold distance from the prior line is removed so as to provide one line per road. In some embodiments, the threshold distance is the row span.
The result of the method 300 is data defining the positioning of lines within a block (for example, the positions of the road 130 and the service road 140 within the block 110 described above with reference to
As noted above, the method 300 may be the image recognition step 220 of method 200. Therefore, the output of the method 300 may be the output of step 220 of the method 200. Referring back to
For example, referring to the block 100 shown in Figure A, the path would begin at the top left corner of block 100, trace clockwise to the top end of line 130, travel along line 130 to the bottom end of line 130, and continue clockwise to the bottom left coiner of block 100 and back to the top left corner of block 100. Next, the process would return to the top end of line 130 and trace clockwise to the top right corner of block 100, to the right end of line 140, to the left end of line 140, and back to the top end of line 130. Last, the process would return to the right end of line 140 and trace to the bottom right corner of block 100, to the bottom end of line 130, to the left end of line 140, and back to the right end of line 140, At this point, the entirety of the block 100 has been subdivided into sub-polygons.
Referring back to
In some embodiments, the method 200 also includes step 250, in which a tree-level map is generated. In step 250, lines of trees are generated based on the rows identified in step 240 and the tree span. In some embodiments, a line of trees is assumed to exist between each row identified in step 240 and the adjacent rows/mini-polygon boundary. In some embodiments, for each assumed line of trees, a first tree is located at one end of the line adjacent a boundary of the mini-polygon, and subsequent trees are located regularly at intervals equal to the tree span until the opposite end of the mini-polygon is reached.
Following step 240 (or step 250 in embodiments in which this step is included), the method 200 is complete. The result of the method 200 is block maps for one or more mini-blocks within a block.
In some embodiments, a block map generated by the method 200 (e.g., the block map 500 of
While one or more embodiments of the present disclosure have been described, it is understood that these embodiments are illustrative only, and not restrictive, and that many modifications may become apparent to those of ordinary skill in the art, including that various embodiments of the inventive methodologies, the inventive systems, and the inventive devices described herein can be utilized in any combination with each other. Further still, the various steps may be carried out in any desired order (and any desired steps may be added and/or any desired steps may be eliminated).
This application is a Continuation of International (PCT) Patent Application No. PCT/US2020/025779 filed Mar. 30, 2020, which relates to and claims the benefit of commonly-owned, co-pending U.S. Provisional Patent Application No. 62/826,423, filed Mar. 29, 2019, entitled “METHODS AND SYSTEMS FOR AGRICULTURAL BLOCK MAPPING,” the contents of which are incorporated herein by reference in their entirety.
| Number | Date | Country | |
|---|---|---|---|
| 62826423 | Mar 2019 | US |
| Number | Date | Country | |
|---|---|---|---|
| Parent | PCT/US2020/025779 | Mar 2020 | US |
| Child | 17489118 | US |