Unmanned aerial vehicle three-dimensional modeling shooting point acquisition method based on digital elevation change characteristics

By using a method for obtaining shooting points in UAV 3D modeling based on digital elevation variation characteristics, necessary shooting points are automatically selected, solving the problems of redundancy and cost waste in UAV 3D modeling and realizing an efficient 3D modeling process.

CN116524107BActive Publication Date: 2026-04-17CHANGCHUN INST OF TECH
View PDF 2 Cites 0 Cited by

Patent Information

Authority / Receiving Office
CN · China
Patent Type
Patents(China)
Current Assignee / Owner
CHANGCHUN INST OF TECH
Filing Date
2022-09-07
Publication Date
2026-04-17

AI Technical Summary

Technical Problem

Existing methods for obtaining shooting points for 3D modeling of drones have many redundancies, resulting in a large overall shooting workload and wasted costs. Furthermore, subjective selection can easily lead to dense location deviations and data loss.

Method used

A method for obtaining shooting points for UAV 3D modeling based on digital elevation change characteristics is proposed. By establishing a list of shooting grid points, necessary shooting points are automatically selected and unnecessary points are deleted using elevation change characteristics and overlapping boundary analysis operators.

Benefits of technology

This approach achieves the goal of reducing the number of drone shooting points, decreasing the workload, and saving costs while ensuring the quality of the 3D model, and avoiding redundancy and data loss.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN116524107B_ABST
    Figure CN116524107B_ABST
Patent Text Reader

Abstract

The application relates to the field of unmanned aerial vehicle (UAV) three-dimensional modeling and discloses a UAV three-dimensional modeling shooting point acquisition method based on digital elevation change characteristics, which aims to solve the problem of large shooting overall task quantity and cost waste caused by redundancy in the prior art UAV shooting point acquisition method. The application comprises the following steps: acquiring the number GPNum of shooting grid points in a shooting grid point list DenList of a region; establishing a shooting overlap boundary analysis operator OptBorder to obtain a boundary judgment result variable OBResult; establishing an elevation change characteristic operator OptDEM to obtain an elevation change characteristic result variable ODResult; calculating the elevation change characteristic value of each shooting grid point of the DenList by using the OptDEM; sorting all elements of the DenList in ascending order based on the elevation change characteristic value; deleting the unnecessary shooting grid points in the DenList by using the OptBorder operator and the elevation change characteristic value; and outputting the UAV three-dimensional modeling shooting point based on the DenList. The application is used for acquiring the shooting point of the UAV three-dimensional modeling.
Need to check novelty before this filing date? Find Prior Art

Description

Technical Field

[0001] This invention relates to the field of UAV 3D modeling, and in particular to a method for obtaining UAV 3D modeling shooting points based on digital elevation change characteristics. Background Technology

[0002] Using drones to continuously photograph a ground area can yield a large number of images of that area. These images can then be converted into 3D models of the area using 3D reconstruction methods. These 3D models can be used for film and television production, geographic information acquisition, and virtual reality scene construction. Therefore, using drone photos for 3D modeling has significant practical and economic value.

[0003] Using drones for photography and then performing 3D modeling presents a typical dilemma: On the one hand, the denser the drone's shooting points, the more regional information it captures, resulting in a more detailed 3D model. Therefore, high-quality modeling requires as dense a shooting frequency as possible. On the other hand, each drone shot requires a series of actions: moving to the corresponding position, hovering to capture the image, and then accelerating back to move. These actions consume significant flight time and power. Due to limitations in drone speed, storage capacity, and battery storage, excessively dense shooting necessitates frequent return flights to replace batteries and memory cards, leading to a substantial increase in time, equipment, and manpower costs, significantly raising the cost of drone 3D modeling. Therefore, it is necessary to appropriately reduce the density of drone shooting. Thus, the density of drone 3D modeling shooting points should be balanced, with dense shooting in necessary locations and sparse shooting in unnecessary locations.

[0004] The current mainstream solution in the industry to address this contradiction is to leverage the experience of the photographers. For relatively flat areas with little variation (such as playgrounds, large roads, grasslands, and rooftops of uniform material), the shooting density is reduced; while for locations on the edge of varying terrain features (such as the boundary between the ground and buildings, or the boundary between a playground and a platform), the shooting density is increased. This approach improves detail while reducing shooting density. This solution has some effectiveness, but it encounters the following problems: 1) The locations are not accurate enough. The operators select points on maps based solely on maps and orthophotos, and these selection criteria are based on subjective experience. 1) The lack of a three-dimensional modeling algorithm means that the dense locations may deviate from the areas that actually need to be densely selected, resulting in a lot of meaningless redundancy and insufficient density of key locations; 2) Reducing the density of shooting points will lead to data loss. When performing 3D modeling, it is necessary to ensure that the photos overlap within a certain spatial range. When the overlap is insufficient, it may cause some 3D models to have holes. Subjective selection cannot strictly calculate the shooting position, and can only use a relatively large number of shooting points to make up for the possible holes, thus causing more redundancy, further increasing the overall shooting workload and wasting costs. Summary of the Invention

[0005] The purpose of this invention is to solve the problem that existing methods for obtaining drone shooting locations are redundant, resulting in a large overall shooting workload and wasted costs. Therefore, this invention proposes a method for obtaining drone shooting locations based on digital elevation change characteristics through 3D modeling.

[0006] The specific process of the method for obtaining shooting points in UAV 3D modeling based on digital elevation change characteristics is as follows:

[0007] S1. Input the list variable Scope, which represents the range of polygon points corresponding to the area to be 3D modeled; input the digital elevation image DemImage, which represents the area corresponding to Scope; input the variable GPDist, representing the maximum overlap distance between images; obtain the maximum X-coordinate XMax, the minimum X-coordinate XMin, the maximum Y-coordinate YMax, and the minimum Y-coordinate YMin among all points in Scope; create a grid point list for the area; obtain the number of grid points GPNum in DenList.

[0008] S2. Establish the shooting overlap boundary analysis operator OptBorder; the operator input is the shooting overlap boundary analysis operator index variable OBidx, and the operator output is the boundary judgment result variable OBResult;

[0009] S3. Establish the elevation change feature operator OptDEM; the operator input is the elevation change feature operator index variable ODidx, and the operator output is the elevation change feature result variable ODResult;

[0010] S4. Calculate the elevation change feature value of each shooting grid point in DenList using the OptDEM obtained in S3; and sort all elements of DenList in ascending order based on the elevation change feature value.

[0011] S5. Using the OptBorder operator and elevation change feature value obtained in S2, delete the unnecessary shooting grid points in the sorted DenList obtained in S4, and output the UAV 3D model shooting points based on DenList.

[0012] The beneficial effects of this invention are as follows:

[0013] This invention provides a method for acquiring UAV 3D modeling shooting points based on digital elevation change characteristics. First, a dense list of shooting grid points is established. Then, unnecessary points in the list are deleted based on two criteria: digital elevation change characteristics and whether they exceed overlap boundaries. Finally, the output of the shooting grid point list achieves effective acquisition of UAV 3D modeling shooting points. This invention enables automated UAV 3D modeling shooting point selection based on digital elevation change characteristics and whether overlap boundaries are exceeded. It ensures a sufficient number of shooting points in areas requiring dense shooting, while minimizing shooting points in areas where dense shooting is unnecessary. This allows the UAV to acquire sufficient shooting data to ensure the quality of the corresponding 3D model while significantly reducing the number of shooting points, thus completing the UAV 3D modeling shooting task with a lower shooting workload and saving shooting costs. Attached Figure Description

[0014] Figure 1 This is a flowchart of the present invention;

[0015] Figure 2 The input image is for an embodiment of the present invention. Detailed Implementation

[0016] Specific implementation method one: as follows Figure 1 As shown, the specific process of the UAV 3D modeling and shooting point acquisition method based on digital elevation change characteristics in this embodiment is as follows:

[0017] S1. Input the list variable Scope, which represents the range of polygon points corresponding to the area to be 3D modeled; input the digital elevation image DemImage of the area corresponding to Scope; input the variable GPDist, representing the maximum overlap distance between images; obtain the maximum X-coordinate XMax, the minimum X-coordinate XMin, the maximum Y-coordinate YMax, and the minimum Y-coordinate YMin among all points in Scope; create a grid point list for the area; obtain the number of grid points GPNum in DenList.

[0018] S101, Input the polygon point list variable Scope corresponding to the range of the 3D model area to be built. Scope represents a list composed of the midpoints of a polygon. Scope is a list composed of points, and each element in the list contains attributes:

[0019] PX: X-coordinate of the point

[0020] PY: Y-coordinate of the point

[0021] S102, Input the digital elevation image DemImage of the area corresponding to the Scope; Input the maximum shooting overlap distance variable GPDist; where each cell in DemImage stores the digital elevation value of the cell's location; GPDist is a floating-point number;

[0022] S103, obtain the maximum X coordinate among all points in the Scope, XMax = the maximum PX attribute of all points in the Scope;

[0023] S104, obtain the minimum X coordinate value among all points in the Scope, XMin = the minimum PX attribute value among all points in the Scope;

[0024] S105, obtain the maximum value of the Y coordinate among all points in the Scope, YMax = the maximum value of the PY attribute among all points in the Scope;

[0025] S106, obtain the minimum Y-coordinate value among all points in the Scope, YMax = the minimum PY attribute value among all points in the Scope;

[0026] S107, Create a list of regional shooting grid points DenList. In the initial state, DenList is an empty list.

[0027] S108, Set the initial counter for the X direction IntXCounter = XMin;

[0028] S109, Set the initial counter for the Y direction IntYCounter = YMin;

[0029] S110, establish a spatial location TempPos = X coordinate IntXCounter and Y coordinate IntYCounter; if TempPos is within the area enclosed by the polygon Scope, go to S111, otherwise go to S113.

[0030] S111, Establish the shooting grid point variable TempGPT, which contains the following attributes:

[0031] GPTX: The X coordinate of the captured grid point, its value is set to IntXCounter;

[0032] GPTY: The Y coordinate of the captured grid point, its value is set to IntYCounter;

[0033] GPTFV: Digital elevation feature variable for captured grid points, which is a floating-point number, and its value is 0 initially;

[0034] GPTDL: Capture grid point status, its value is set to 0;

[0035] A GPTDL value of 0 indicates a normal state, while a GPTDL value of -1 indicates a removable state.

[0036] S112, add TempGPT to DenList;

[0037] S113, IntYCounter=IntYCounter+1;

[0038] S114, if IntYCounter<=YMax, then go to S110, otherwise go to S115;

[0039] S115, IntXCounter=IntXCounter+1;

[0040] S116, if IntXCounter<=XMax, then go to S109, otherwise go to S117;

[0041] S117, obtain the number of grid points captured in DenList, GPNum = the number of elements in DenList;

[0042] S2, establish the shooting overlap boundary analysis operator OptBorder; the operator input is the shooting overlap boundary analysis operator index variable OBidx, and the operator output is the boundary judgment result variable OBResult;

[0043] S201, Establish the shooting overlap boundary analysis operator OptBorder; the operator input is the shooting overlap boundary analysis operator index variable OBidx;

[0044] S202, establish the boundary determination result variable OBResult = 1;

[0045] S203, Set the PGTX attribute of the temporary X-coordinate variable OBTX = the OBidx-th element of DenList for boundary analysis; Set the PGTY attribute of the temporary Y-coordinate variable OBTY = the OBidx-th element of DenList for boundary analysis;

[0046] S204, Establish the first buffer region OBCircle1 for boundary analysis = a circle with OBTX and OBTY as the center and a radius of 1.5;

[0047] S205, Establish the first buffer zone point list OBTL1 = Find all shooting grid points contained in the range of OBCircle1 in DenList;

[0048] S206, If the number of grid points captured in OBTL1 is 5, then proceed to S207; otherwise, proceed to S212.

[0049] S207, Establish the second buffer region OBCircle2 for boundary analysis = a circle with OBTX and OBTY as the center and GPDist as the radius;

[0050] S208, Establish the second buffer zone point list OBTL2 = Find all shooting grid points contained in OBCircle2 in DenList;

[0051] S209, Filter OBTL2 and delete all shooting grid points with GPTDL attribute < 0;

[0052] S210, If the number of grid points captured in OBTL2 is more than 3, then go to S211; otherwise, go to S212.

[0053] S211, OBResult = 0;

[0054] S212, output OBResult as the result of OptBorder;

[0055] S3, establish the elevation change feature operator OptDEM; the operator input is the elevation change feature operator index variable ODidx, and the operator output is the elevation change feature result variable ODResult;

[0056] S301, Establish the elevation change feature operator OptDEM; the operator input is the elevation change feature operator index variable ODidx;

[0057] S302, establish the elevation change characteristic result variable ODResult = 0; establish the elevation change characteristic operator segmentation temporary array ODTArray = a floating-point array with 6 elements, and the value of each element is 0;

[0058] S303, Set the X-coordinate variable of the edge elevation change feature ODTX = the PGTX attribute of the ODidx-th element of DenList; Set the Y-coordinate variable of the elevation change feature ODTY = the PGTY attribute of the ODidx-th element of DenList;

[0059] S304, Establish the elevation change characteristic region ODRCT = Establish a rectangular region with X coordinates in the interval [ODTX-GPDist / 4,ODTX+GPDist / 4] and Y coordinates in the interval [ODTY-GPDist / 4,ODTY+GPDist / 4].

[0060] S305, Elevation Change Feature Sub-image ODSubImg = Extracts a sub-image within the ODRCT range from DemImage.

[0061] S306, Elevation change characteristic pixel variable ODPX = Take the value of the pixel at the ODTX and ODTY positions on DemImage;

[0062] S307, the number of pixels in the elevation change feature sub-image ODSubNum = the number of pixels contained in ODSubImg;

[0063] S308, Elevation change characteristic counter ODSubCounter = 1;

[0064] S309, Elevation change characteristic temporary storage pixel variable ODTempPx = retrieve the ODSubCounter-th pixel of ODSubImg;

[0065] S310, the elevation change characteristic location variable ODPos = Round((ODPX-ODTempPx) / (maximum value of all elements of ODSubImg)×5)+1; where Round is for rounding.

[0066] S311, ODTArray[ODPos]=ODTArray[ODPos]+1;

[0067] S312, ODSubCounter=ODSubCounter+1;

[0068] S313, if ODSubCounter<=ODSubNum, then go to S309; ​​otherwise, go to S314.

[0069] S314, establish the first temporary variable ODTemp1 of the elevation change characteristic operator = ((maximum value of ODTArray) - (minimum value of ODTArray)) / ODSubNum;

[0070] S315, Establish the second temporary variable ODTemp2 = (standard deviation of ODTArray) / ODSubNum for the elevation change characteristic operator;

[0071] S316, ODResult = tanh(ODTemp1 + 0.1) + 0.25 × tanh(ODTemp2 + 0.1); where tanh is the hyperbolic tangent value.

[0072] S317, output ODResult as the result of OptDEM;

[0073] S4. Calculate the elevation change feature value of each shooting grid point in DenList using OptDEM; and sort all elements of DenList in ascending order based on the elevation change feature value.

[0074] S401, Set the overall processing counter PSCounter = 1;

[0075] S402, use OptDEM for calculation. For the OptDEM operator input ODidx = PSCounter, the operator output ODResult is stored in the GPTFV attribute of the PSCounter-th element of DenList.

[0076] S403, PSCounter=PSCounter+1;

[0077] S404, if PSCounter<=GPNum, then go to S402; otherwise, go to S405.

[0078] S405, Sort all elements of DenList in ascending order based on the GPTFV attribute;

[0079] S5 uses the OptBorder operator and elevation change feature values ​​to delete unnecessary shooting grid points in DenList, and outputs the UAV 3D model shooting points based on DenList;

[0080] S501, set the filter counter SXCounter = 1;

[0081] S502, if the GPTFV attribute value of the SXCounter-th element of DenList is >0.5, then go to S506; otherwise, go to S503.

[0082] S503, use OptBorder for calculation. For the OptBorder operator input OBidx = SXCounter, the operator output OBResult is stored in the first temporary variable SXTemp1 of the filtering process.

[0083] S504, if the value of SXTemp1 is 1, go to S506, otherwise go to S505;

[0084] S505, set GPTDL = -1 for the SXCounter-th element of DenList;

[0085] S506, SXCounter=SXCounter+1;

[0086] S507, if SXCounter <= GPNum, then go to S502; otherwise, go to S508.

[0087] S508, delete all shooting grid points in DenList with GPTDL of -1;

[0088] S509, GPNum = the number of elements in DenList;

[0089] S510,SXCounter=1;

[0090] S511, outputs the GPTX and GPTY of the SXCounter-th element of DenList as a drone 3D modeling shooting point;

[0091] S512, SXCounter=SXCounter+1;

[0092] S513, if SXCounter <= GPNum, then go to S511; otherwise, go to S514.

[0093] Example 1: The following experiment was conducted according to the method described in the specific implementation:

[0094] S1. Input the polygon Scope corresponding to the area to be 3D modeled, input the digital elevation image DemImage of the area corresponding to the Scope; input the maximum shooting overlap spacing variable GPDist; obtain the maximum X-coordinate XMax among all points of the Scope, obtain the minimum X-coordinate XMin among all points of the Scope, obtain the maximum Y-coordinate YMax among all points of the Scope, obtain the minimum Y-coordinate YMin among all points of the Scope; create a grid point list for the area to be photographed DenList; obtain the number of grid points GPNum in DenList.

[0095] S101, Input the polygon Scope corresponding to the area to be built in the 3D model region. Scope is a list of points, where each element is a point and each point contains two attributes:

[0096] PX: X-coordinate of the point

[0097] PY: Y-coordinate of the point

[0098] S102, Input the digital elevation image DemImage of the area corresponding to the Scope; Input the maximum shooting overlap distance variable GPDist; where each cell in DemImage stores the digital elevation value of the cell's location; GPDist is a floating-point number;

[0099] S103, obtain the maximum X coordinate among all points in the Scope, XMax = the maximum PX attribute of all points in the Scope;

[0100] S104, obtain the minimum X coordinate value among all points in the Scope, XMin = the minimum PX attribute value among all points in the Scopt;

[0101] S105, obtain the maximum value of the Y coordinate among all points in the Scope, YMax = the maximum value of the PY attribute among all points in the Scopt;

[0102] S106, obtain the minimum Y-coordinate value among all points in the Scope, YMax = the minimum PY attribute value among all points in the Scopt;

[0103] S107, Create a list of regional shooting grid points DenList. In the initial state, DenList is an empty list.

[0104] S108, Set the initial counter for the X direction IntXCounter = XMin;

[0105] S109, Set the initial counter for the Y direction IntYCounter = YMin;

[0106] S110, establish a spatial location TempPos = X coordinate IntXCounter and Y coordinate IntYCounter; if TempPos is within the area enclosed by the polygon Scope, go to S111, otherwise go to S113.

[0107] S111, Establish the shooting grid point variable TempGPT, which contains the following attributes:

[0108] GPTX: The X coordinate of the captured grid point, its value is set to IntXCounter;

[0109] GPTY: The Y coordinate of the captured grid point, its value is set to IntYCounter;

[0110] GPTFV: Digital elevation feature variable for captured grid points, which is a floating-point number, and its value is 0 initially;

[0111] GPTDL: Capture grid point status, its value is set to 0;

[0112] S112, add TempGPT to DenList;

[0113] S113, IntYCounter=IntYCounter+1;

[0114] S114, if IntYCounter<=YMax, then go to S110, otherwise go to S115;

[0115] S115, IntXCounter=IntXCounter+1;

[0116] S116, if IntXCounter<=XMax, then go to S109, otherwise go to S117;

[0117] S117, obtain the number of grid points captured in DenList, GPNum = the number of elements in DenList;

[0118] The polygon scopes corresponding to the 3D modeling area input in this step are shown in Table 1, and the digital elevation image (DemImage) of the area corresponding to the scope is shown in Table 1. Figure 2 :

[0119] Table 1

[0120] PX PY 1394515 5445000 1394564 5445000 1394564 5445049 1394515 5445049

[0121] Input the maximum shooting overlap spacing variable GPDist = 4;

[0122] The maximum X-coordinate among all points in the Scope is XMax = 1394564.

[0123] The minimum X-coordinate among all points in the Scope is obtained: XMin = 1394515.

[0124] The maximum Y-coordinate among all points in the Scope is YMax = 5445049.

[0125] The minimum Y-coordinate among all points in the Scope is YMin = 5445000;

[0126] Create a regional grid point list, DenList, as shown in Table 2:

[0127] Table 2

[0128]

[0129] Finally, the number of grid points captured in DenList was obtained as GPNum = 2500.

[0130] S2, establish the shooting overlap boundary analysis operator OptBorder; the operator input is the shooting overlap boundary analysis operator index variable OBidx, and the operator output is the boundary judgment result variable OBResult;

[0131] S201, Establish the shooting overlap boundary analysis operator OptBorder; the operator input is the shooting overlap boundary analysis operator index variable OBidx;

[0132] S202, establish the boundary determination result variable OBResult = 1;

[0133] S203, Set the PGTX attribute of the temporary X-coordinate variable OBTX = the OBidx-th element of DenList for boundary analysis; Set the PGTY attribute of the temporary Y-coordinate variable OBTY = the OBidx-th element of DenList for boundary analysis;

[0134] S204, Establish the first buffer region OBCircle1 for boundary analysis = a circle with OBTX and OBTY as the center and a radius of 1.5;

[0135] S205, Establish the first buffer zone point list OBTL1 = Find all shooting grid points contained in the range of OBCircle1 in DenList;

[0136] S206, If the number of grid points captured in OBTL1 is 5, then proceed to S207; otherwise, proceed to S212.

[0137] S207, Establish the second buffer region OBCircle2 for boundary analysis = a circle with OBTX and OBTY as the center and GPDist as the radius;

[0138] S208, Establish the second buffer zone point list OBTL2 = Find all shooting grid points contained in OBCircle2 in DenList;

[0139] S209, Filter OBTL2 and delete all shooting grid points with GPTDL attribute < 0;

[0140] S210, If the number of grid points captured in OBTL2 is more than 3, then go to S211; otherwise, go to S212.

[0141] S211, OBResult = 0;

[0142] S212, output OBResult as the result of OptBorder;

[0143] S3, establish the elevation change feature operator OptDEM; the operator input is the elevation change feature operator index variable ODidx, and the operator output is the elevation change feature result variable ODResult;

[0144] S301, Establish the elevation change feature operator OptDEM; the operator input is the elevation change feature operator index variable ODidx;

[0145] S302, establish the elevation change characteristic result variable ODResult = 0; establish the elevation change characteristic operator segmentation temporary array ODTArray = a floating-point array with 6 elements, and the value of each element is 0;

[0146] S303, Set the X-coordinate variable of the edge elevation change feature ODTX = the PGTX attribute of the ODidx-th element of DenList; Set the Y-coordinate variable of the elevation change feature ODTY = the PGTY attribute of the ODidx-th element of DenList;

[0147] S304, Establish the elevation change characteristic region ODRCT = Establish a rectangular region with X coordinates in the interval [ODTX-GPDist / 4,ODTX+GPDist / 4] and Y coordinates in the interval [ODTY-GPDist / 4,ODTY+GPDist / 4].

[0148] S305, Elevation Change Feature Sub-image ODSubImg = Extracts a sub-image within the ODRCT range from DemImage.

[0149] S306, Elevation change characteristic pixel variable ODPX = Take the value of the pixel at the ODTX and ODTY positions on DemImage;

[0150] S307, the number of pixels in the elevation change feature sub-image ODSubNum = the number of pixels contained in ODSubImg;

[0151] S308, Elevation change characteristic counter ODSubCounter = 1;

[0152] S309, Elevation change characteristic temporary storage pixel variable ODTempPx = retrieve the ODSubCounter-th pixel of ODSubImg;

[0153] S310, the elevation change characteristic location variable ODPos = Round((ODPX-ODTempPx) / (maximum value of all elements of ODSubImg)×5)+1; where Round is for rounding.

[0154] S311, ODTArray[ODPos]=ODTArray[ODPos]+1;

[0155] S312, ODSubCounter=ODSubCounter+1;

[0156] S313, if ODSubCounter<=ODSubNum, then go to S309; ​​otherwise, go to S314.

[0157] S314, establish the first temporary variable ODTemp1 of the elevation change characteristic operator = ((maximum value of ODTArray) - (minimum value of ODTArray)) / ODSubNum;

[0158] S315, Establish the second temporary variable ODTemp2 = (standard deviation of ODTArray) / ODSubNum for the elevation change characteristic operator;

[0159] S316, ODResult = tanh(ODTemp1 + 0.1) + 0.25 × tanh(ODTemp2 + 0.1); where tanh is the hyperbolic tangent value.

[0160] S317, output ODResult as the result of OptDEM;

[0161] S4. Calculate the elevation change feature value of each shooting grid point in DenList using OptDEM; and sort all elements of DenList in ascending order based on the elevation change feature value.

[0162] S401, Set the overall processing counter PSCounter = 1;

[0163] S402, use OptDEM for calculation. For the OptDEM operator input ODidx = PSCounter, the operator output ODResult is stored in the GPTFV attribute of the PSCounter-th element of DenList.

[0164] S403, PSCounter=PSCounter+1;

[0165] S404, if PSCounter<=GPNum, then go to S402; otherwise, go to S405.

[0166] S405, Sort all elements of DenList in ascending order based on the GPTFV attribute;

[0167] S5 uses the OptBorder operator and elevation change feature values ​​to delete unnecessary shooting grid points in DenList, and outputs the UAV 3D model shooting points based on DenList;

[0168] S501, set the filter counter SXCounter = 1;

[0169] S502, if the GPTFV attribute value of the SXCounter-th element of DenList is >0.5, then go to S506; otherwise, go to S503.

[0170] S503, use OptBorder for calculation. For the OptBorder operator input OBidx = SXCounter, the operator output OBResult is stored in the first temporary variable SXTemp1 of the filtering process.

[0171] S504, if the value of SXTemp1 is 1, go to S506, otherwise go to S505;

[0172] S505, set GPTDL = -1 for the SXCounter-th element of DenList;

[0173] S506, SXCounter=SXCounter+1;

[0174] S507, if SXCounter <= GPNum, then go to S502; otherwise, go to S508.

[0175] S508, delete all shooting grid points in DenList with GPTDL of -1;

[0176] S509, GPNum = the number of elements in DenList;

[0177] S510,SXCounter=1;

[0178] S511, outputs the GPTX and GPTY of the SXCounter-th element of DenList as a drone 3D modeling shooting point;

[0179] S512, SXCounter=SXCounter+1;

[0180] S513, if SXCounter <= GPNum, then go to S511; otherwise, go to S514.

[0181] S514, Step S5 ends;

[0182] The output of step S5 is shown in Table 3:

[0183] Table 3

[0184]

[0185] 1321 3D modeling shooting points were obtained;

[0186] Example 2: To verify the beneficial effects of the present invention, the following experiments were conducted:

[0187] This invention introduces three typical scenarios to compare the number of shooting points in the generated UAV 3D model and the quality of the generated 3D model. The comparison results are shown in the table below:

[0188] Table 4

[0189]

[0190] As can be seen from the table above, while shooting at 1-meter intervals yields good results, it requires a large number of shooting points. While selecting shooting points based on human experience results in fewer points, it also creates gaps (requiring additional shots), leading to lower 3D model quality. The method proposed in this invention obtains significantly fewer shooting points than both the 1-meter interval shooting and human experience-based point selection methods, while achieving higher 3D model quality. Therefore, the 3D modeling shooting points obtained by this method can reduce the overall workload of UAV shooting while maintaining the quality of the corresponding 3D model, demonstrating significant application value.

Claims

1. A method for obtaining a UAV three-dimensional modeling shooting point based on digital elevation change characteristics, characterized in that The specific process of the method is as follows: S1. Input the list variable Scope, which represents the range of polygon points corresponding to the area to be 3D modeled; input the digital elevation image DemImage, which represents the area corresponding to Scope; input the variable GPDist, representing the maximum overlap distance between images; obtain the maximum X-coordinate XMax, the minimum X-coordinate XMin, the maximum Y-coordinate YMax, and the minimum Y-coordinate YMin among all points in Scope; create a grid point list for the area; obtain the number of grid points GPNum in DenList. S2. Establish the shooting overlap boundary analysis operator OptBorder; the operator input is the shooting overlap boundary analysis operator index variable OBidx, and the operator output is the boundary determination result variable OBResult, including the following steps: S201, Establish the shooting overlap boundary analysis operator OptBorder; the operator input is the shooting overlap boundary analysis operator index variable OBidx; S202, establish the boundary determination result variable OBResult=1; S203, Set the PGTX attribute of the OBDx-th element of the boundary analysis temporary X-coordinate variable OBTX=DenList; Set the PGTY attribute of the OBDx-th element of the boundary analysis temporary Y-coordinate variable OBTY=DenList; S204, Establish the first buffer region OBCircle1 for boundary analysis = a circle with OBTX and OBTY as the center and a radius of 1.5; S205, Establish the first buffer zone point list OBTL1 = Search in DenList for all shooting grid points contained within the range of OBCircle1; S206, If the number of grid points captured in OBTL1 is 5, then proceed to S207; otherwise, proceed to S212. S207, Establish the second buffer region OBCircle2 for boundary analysis = a circle with OBTX and OBTY as the center and GPDist as the radius; S208, Establish the second buffer zone point list OBTL2 = Search in DenList for all shooting grid points contained in OBCircle2; S209, Filter OBTL2 and delete all shooting grid points with GPTDL attribute < 0; S210, If the number of grid points captured in OBTL2 is more than 3, then go to S211; otherwise, go to S212. S211, OBResult=0; S212, output OBResult as the result of OptBorder; S3. Establish the elevation change feature operator OptDEM; the operator input is the elevation change feature operator index variable ODidx, and the operator output is the elevation change feature result variable ODResult, including the following steps: S301, Establish the elevation change feature operator OptDEM; the operator input is the elevation change feature operator index variable ODidx; S302, establish the elevation change characteristic result variable ODResult=0; establish the elevation change characteristic operator segmentation temporary array ODTArray=a floating-point array with 6 elements, and the value of each element is 0; S303, set the X-coordinate variable of the side elevation change feature ODTX=DenList's PGTX attribute; set the Y-coordinate variable of the elevation change feature ODTY=DenList's PGTY attribute; S304, Establish the elevation change characteristic region ODRCT = Establish a rectangular region with X coordinates in the interval [ODTX-GPDist / 4, ODTX+GPDist / 4] and Y coordinates in the interval [ODTY-GPDist / 4, ODTY+GPDist / 4]. S305, Elevation Change Feature Sub-image ODSubImg = Extracts the sub-image within the ODRCT range from DemImage; S306, Elevation variation characteristic pixel variable ODPX = Extract the value of the pixel at position ODTX and ODTY on DemImage; S307, the number of pixels in the elevation change feature sub-image ODSubNum = the number of pixels contained in ODSubImg; S308, Elevation change characteristic counter ODSubCounter=1; S309, Elevation change characteristic temporary storage pixel variable ODTempPx = retrieve the ODSubCounter-th pixel of ODSubImg; S310, the elevation change characteristic location variable ODPos = Round((ODPX-ODTempPx) / (maximum value of all elements of ODSubImg)×5)+1; where Round is for rounding. S311, ODTArray[ODPos]=ODTArray[ODPos]+1; S312, ODSubCounter=ODSubCounter+1; S313, if ODSubCounter<=ODSubNum, then go to S309; ​​otherwise, go to S314. S314, Establish the first temporary variable ODTemp1 for the elevation change characteristic operator; S315, Establish the second temporary variable ODTemp2 for the elevation change characteristic operator; S316, ODResult = tanh(ODTemp1 + 0.1) + 0.25 × tanh(ODTemp2 + 0.1); where tanh is the hyperbolic tangent value. S317, Output ODResult as the result of OptDEM; S4. Calculate the elevation change feature value of each shooting grid point in DenList using the OptDEM obtained in S3; and sort all elements of DenList in ascending order based on the elevation change feature value. S5. Using the OptBorder operator and elevation change feature value obtained in S2, delete the unnecessary shooting grid points in the sorted DenList obtained in S4, and output the UAV 3D model shooting points based on DenList. 2.The UAV 3D modeling shooting point acquisition method based on digital elevation change features according to claim 1, characterized in that: In S1, the input variables are: Scope (a list of polygon points corresponding to the area to be 3D modeled), DemImage (a digital elevation image of the area corresponding to Scope), GPDist (the maximum overlap distance between images), XMax (the maximum value of the X coordinate among all points in Scope), XMin (the minimum value of the X coordinate among all points in Scope), YMax (the maximum value of the Y coordinate among all points in Scope), YMin (the minimum value of the Y coordinate among all points in Scope), and DenList (a list of images of grid points in the area). To obtain the number of captured grid points GPNum in DenList, the following steps are involved: S101, Input the list variable Scope, which is the range of polygon points corresponding to the area to be built in the 3D model region; The Scope represents a list of the midpoints of a polygon. The Scope is a list of points, and each element in the list contains the following attributes: PX: The X coordinate of the point; PY: The Y-coordinate of the point; S102, Input the digital elevation image (DemImage) of the area corresponding to the Scope; Input the maximum shooting overlap spacing variable (GPDist); Each cell in the DemImage stores the digital elevation value of the cell's location. The GPDist is a floating-point number; S103, obtain the maximum X coordinate among all points in the Scope, XMax = the maximum PX attribute of all points in the Scope; S104, obtain the minimum X coordinate among all points in the Scope, XMin = the minimum PX attribute value of all points in the Scope; S105, obtain the maximum value of the Y coordinate among all points in the Scope, YMax = the maximum value of the PY attribute among all points in the Scope; S106, obtain the minimum Y-coordinate value among all points in the Scope, YMax = the minimum PY attribute value among all points in the Scope; S107, Create a regional shooting grid point list DenList; In the initial state, DenList is an empty list; S108, Set the initial counter for the X direction IntXCounter=XMin; S109, Set the initial counter in the Y direction IntYCounter=YMin; S110, establish a spatial location TempPos with X coordinate IntXCounter and Y coordinate IntYCounter; if TempPos is within the area enclosed by the polygon Scope, go to S111, otherwise go to S113. S111, Establish the shooting grid point variable TempGPT, which contains the following attributes: GPTX: The X coordinate of the captured grid point, its value is set to IntXCounter; GPTY: The Y coordinate of the captured grid point, its value is set to IntYCounter; GPTFV: Digital elevation feature variable of the captured grid points, which is a floating-point number and is initially 0. GPTDL: Capture grid point status, its value is set to 0; S112, add TempGPT to DenList; S113, IntYCounter=IntYCounter+1; S114, if IntYCounter<=YMax, then go to S110, otherwise go to S115; S115, IntXCounter=IntXCounter+1; S116, if IntXCounter<=XMax, go to S109, otherwise go to S117; S117, obtain the number of grid points captured in DenList: GPNum = the number of elements in DenList.

3. The method for obtaining UAV 3D modeling shooting points based on digital elevation change characteristics according to claim 2, characterized in that: In S111, GPTDL of 0 indicates a normal state, and GPTDL of -1 indicates a removable state.

4. The method for obtaining UAV 3D modeling shooting points based on digital elevation change characteristics according to claim 3, characterized in that: ODTemp1=((maximum value of ODTArray)-(minimum value of ODTArray)) / ODSubNum.

5. The method for obtaining UAV 3D modeling shooting points based on digital elevation change characteristics according to claim 4, characterized in that: ODTemp2 = (Standard deviation of ODTArray) / ODSubNum.

6. The method for obtaining UAV 3D modeling shooting points based on digital elevation change characteristics according to claim 5, characterized in that: In step S4, the elevation change characteristic value of each shooting grid point in DenList is calculated using the OptDEM obtained in step S3. Then, based on the elevation change characteristic values, all elements of DenList are sorted in ascending order, including the following steps: S401, Set the overall processing counter PSCounter=1; S402, use OptDEM for calculation. For the OptDEM operator input ODidx=PSCounter, the operator output ODResult is stored in the GPTFV attribute of the PSCounter-th element of DenList. S403, PSCounter=PSCounter+1; S404, if PSCounter<=GPNum, then go to S402, otherwise go to S405; S405 Sort all elements of DenList in ascending order based on the GPTFV attribute.

7. The method for obtaining UAV 3D modeling shooting points based on digital elevation change characteristics according to claim 6, characterized in that: In step S5, the OptBorder operator and elevation change feature values ​​obtained in S2 are used to delete unnecessary grid points from the sorted DenList obtained in S4. Based on the DenList, the UAV 3D modeling shooting points are output, including the following steps: S501, set the filter counter SXCounter=1; S502, if the GPTFV attribute value of the SXCounter-th element of DenList is >0.5, then go to S506; otherwise, go to S503. S503, using OptBorder for calculation, for OptBorder operator input OBidx=SXCounter, operator output OBResult is stored in the first temporary variable SXTemp1 of the filtering process; S504, if the value of SXTemp1 is 1, go to S506, otherwise go to S505; S505, set GPTDL=-1 for the SXCounter-th element of DenList; S506, SXCounter=SXCounter+1; S507, if SXCounter<=GPNum, then go to S502, otherwise go to S508; S508, delete all shooting grid points in DenList with GPTDL of -1; S509, GPNum = the number of elements in DenList; S510, SXCounter=1; S511, outputs the GPTX and GPTY of the SXCounter-th element of DenList as a drone 3D modeling shooting point; S512, SXCounter=SXCounter+1; S513, if SXCounter<=GPNum, go to S511, otherwise go to S514.

Citation Information

Patent Citations

  • Unmanned aerial vehicle path determination method and apparatus for reconstructing three-dimensional model

    CN106296816A

  • Three-dimensional model establishing method based on oblique photography

    CN111583411A