Systems and methods for improved parking space detection

The system enhances parking space detection by creating composite image tiles from satellite images and using machine learning to accurately identify and refine parking spaces, addressing the limitations of existing systems.

JP2025542065APending Publication Date: 2025-12-25PARKOFON INC
View PDF 0 Cites 0 Cited by

Patent Information

Application Number
JP2025507785
Authority / Receiving Office
JP · JP
Patent Type
Applications
Current Assignee / Owner
Priority Date
2022-12-22
Filing Date
2023-12-20
Publication Date
2025-12-25

AI Technical Summary

Technical Problem

Existing map data and satellite imagery lack the detail necessary to accurately detect small objects such as parking spaces, and existing machine learning systems are ineffective in identifying these spaces.

Method used

A system and method that utilizes image tiles from satellite images, creates composite image tiles to enhance detection accuracy, and employs machine learning models to identify and refine parking spaces, removing erroneous and uncertain detections.

Benefits of technology

Improves the detection of parking spaces by creating composite image tiles to combine partial objects across multiple image tiles, enhancing accuracy and reducing computational resources required.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure 2025542065000001_ABST
    Figure 2025542065000001_ABST
Patent Text Reader

Abstract

Various implementations include systems and methods for operating parking space detection. The system may analyze image tiles for parking spaces. A method implemented by the system may include detecting a plurality of parking spaces from the image tiles, analyzing the plurality of parking spaces for erroneous parking spaces, removing at least one detected erroneous parking space from the plurality of parking spaces to form a set of a remaining plurality of parking spaces, and determining one or more parking space attributes for the remaining plurality of parking spaces. The method may also include storing the remaining plurality of parking spaces, the determined at least one uncertain parking space, and their respective associated parking space attributes. The method may further include enabling at least one detected parking space of the plurality of parking spaces to be used to facilitate a vehicle-related activity.
Need to check novelty before this filing date? Find Prior Art

Description

[Technical Field]

[0001] This application claims the benefit of U.S. Non-Provisional Patent Application No. 18 / 087,551, filed December 22, 2022, entitled "SYSTEM AND METHOD FOR IMPROVED PARKING SPAGE DETECTION," the entire disclosure of which is incorporated herein by reference.

[0002] Implementations of the present disclosure relate to computing systems, servers, methods, and devices that provide enhanced functionality and technical improvements over existing computing systems for machine learning and object detection in the transportation industry. [Background technology]

[0003] Satellite data and map data exist for cities and towns that can be used to identify the location of some objects, such as buildings. However, existing map data lacks detail for smaller objects, such as parking spaces. Machine learning and artificial intelligence are used for object detection in images, but existing systems do not accurately detect small objects, such as parking spaces, in map data or satellite imagery. Summary of the Invention

[0004] One or more computer systems may be configured to perform particular operations or actions by having software, firmware, hardware, or a combination thereof installed on the system that, when in operation, causes the system to perform the actions. One or more computer programs may be configured to perform particular operations or actions by including instructions that, when executed by a data processing device, cause the device to perform the actions.

[0005] In some aspects, techniques described herein relate to a method of operating a parking space detection system, including: analyzing image tiles for parking spaces; detecting a plurality of parking spaces from the image tiles; analyzing the plurality of parking spaces for erroneous parking spaces; removing at least one detected erroneous parking space from the plurality of parking spaces to form a set of a remaining plurality of parking spaces; analyzing the image tiles for uncertain parking spaces based on the remaining plurality of parking spaces; determining at least one uncertain parking space based on the remaining plurality of parking spaces; determining one or more parking space attributes of the remaining plurality of parking spaces and one or more parking space attributes of the at least one uncertain parking space based on attributes determined from at least some of the remaining plurality of parking spaces; storing the remaining plurality of parking spaces, the determined at least one uncertain parking space, and their respective associated parking space attributes; and enabling at least one detected parking space of the plurality of parking spaces to be used to facilitate a vehicle-related activity.

[0006] In some aspects, the techniques described herein relate to a method, in which an image tile includes a portion of a satellite image.

[0007] In some aspects, the techniques described herein relate to a method further including analyzing a plurality of image tiles for a parking space.

[0008] In some aspects, the techniques described herein relate to a method, in which an image tile of a plurality of image tiles includes a portion of a satellite image.

[0009] In some aspects, the techniques described herein relate to methods that further include creating at least one composite image tile from at least two image tiles of the plurality of image tiles.

[0010] In some aspects, the techniques described herein relate to methods that further include detecting at least one parking space from the at least one composite image tile.

[0011] In some aspects, the techniques described herein relate to a method, in which at least a first portion of at least one detected parking space from at least one composite image tile is located on a first image tile of the at least two image tiles, and at least a second portion of the detected at least one parking space from the at least one composite image tile is located on a second image tile of the at least two image tiles.

[0012] In some aspects, the techniques described herein relate to a method that further includes: removing any detected erroneous parking spaces from the detected at least one parking space from the at least one composite image tile; determining one or more parking space attributes from the detected at least one parking space from the at least one composite image tile; analyzing the synthetic image tile for additional uncertain parking spaces based on the remaining plurality of parking spaces and the detected at least one parking space from the at least one synthetic image tile; determining at least one additional uncertain parking space based on the remaining plurality of parking spaces and the detected at least one parking space from the at least one synthetic image tile; determining one or more parking space attributes of the at least one additional uncertain parking space based on the attributes determined from at least some of the remaining plurality of parking spaces and the detected at least one parking space from the at least one composite image tile; and storing the remaining plurality of parking spaces, the determined at least one uncertain parking space, the detected at least one parking space from the at least one composite image tile, the determined at least one uncertain parking space, and their respective associated parking space attributes.

[0013] In some aspects, the techniques described herein relate to a method, wherein the vehicle-related activity is a commercial transaction.

[0014] In some aspects, the techniques described herein relate to a method, where a vehicle-related activity is analyzing the vehicle's location in a geofencing system.

[0015] In some aspects, the techniques described herein relate to a method, wherein the vehicle-related activity is navigation.

[0016] In some aspects, the techniques described herein relate to a method, wherein the vehicle-related activity is parking.

[0017] In some aspects, the techniques described herein relate to a method further including acquiring one or more satellite images, creating a plurality of image tiles from the one or more satellite images, and detecting a plurality of parking spaces from the plurality of image tiles.

[0018] In some aspects, the techniques described herein relate to a method, in which the one or more parking space attributes include a color and a type of line for the parking space.

[0019] In some aspects, the techniques described herein relate to a device for operating parking space detection, including one or more processors configured to: analyze image tiles for parking spaces, detect a plurality of parking spaces from the image tiles, analyze the plurality of parking spaces for erroneous parking spaces, remove at least one detected erroneous parking space from the plurality of parking spaces to form a set of a remaining plurality of parking spaces, determine one or more parking space attributes of the remaining plurality of parking spaces, analyze the image tiles for uncertain parking spaces based on the remaining plurality of parking spaces, determine at least one uncertain parking space based on the remaining plurality of parking spaces, determine one or more parking space attributes of the at least one uncertain parking space based on the attributes determined from at least some of the remaining plurality of parking spaces, store the remaining plurality of parking spaces, the determined at least one uncertain parking space, and their respective associated parking space attributes, and enable at least one detected parking space of the plurality of parking spaces to be used to facilitate a vehicle-related activity.

[0020] In some aspects, the techniques described herein relate to a device where an image tile includes a portion of a satellite image.

[0021] In some aspects, the techniques described herein relate to a device in which the one or more processors are further configured to: analyze a plurality of image tiles for a parking space;

[0022] In some aspects, the techniques described herein relate to a device, where an image tile of a plurality of image tiles includes a portion of a satellite image.

[0023] In some aspects, the techniques described herein relate to a device in which the one or more processors are further configured to: create at least one composite image tile from at least two image tiles of the plurality of image tiles.

[0024] In some aspects, the techniques described herein relate to a device, in which the one or more processors are further configured to: detect at least one parking space from the at least one composite image tile;

[0025] In some aspects, the techniques described herein relate to a device in which at least a first portion of the detected at least one parking space from the at least one composite image tile is located on a first image tile of the at least two image tiles, and at least a second portion of the detected at least one parking space from the at least one composite image tile is located on a second image tile of the at least two image tiles.

[0026] In some aspects, the techniques described herein relate to a device in which the one or more processors are further configured to: remove any detected erroneous parking spaces from the detected at least one parking space from the at least one composite image tile; determine one or more parking space attributes from the detected at least one parking space from the at least one composite image tile; analyze the composite image tiles for additional uncertain parking spaces based on the remaining plurality of parking spaces and the detected at least one parking space from the at least one composite image tile; determine at least one additional uncertain parking space based on the remaining plurality of parking spaces and the detected at least one parking space from the at least one composite image tile; determine one or more parking space attributes of the at least one additional uncertain parking space based on the attributes determined from at least some of the remaining plurality of parking spaces and the detected at least one parking space from the at least one composite image tile; and store the remaining plurality of parking spaces, the determined at least one uncertain parking space, the detected at least one parking space from the at least one composite image tile, the determined at least one uncertain parking space, and their respective associated parking space attributes.

[0027] In some aspects, the techniques described herein relate to a device, where the one or more processors are further configured to: enable at least one detected parking space of the plurality of parking spaces to be used to facilitate a vehicle-related activity, where the vehicle-related activity is a commercial transaction.

[0028] In some aspects, the techniques described herein relate to a device, where the one or more processors are further configured to: enable at least one detected parking space of the plurality of parking spaces to be used to facilitate a vehicle-related activity, where the vehicle-related activity is analyzing the location of the vehicle in a geofencing system.

[0029] In some aspects, the techniques described herein relate to a device, where the one or more processors are further configured to: enable at least one detected parking space of the plurality of parking spaces to be used to facilitate a vehicle-related activity, where the vehicle-related activity is navigation.

[0030] In some aspects, the techniques described herein relate to a device, where the one or more processors are further configured to: enable at least one detected parking space of the plurality of parking spaces to be used to facilitate a vehicle-related activity, where the vehicle-related activity is parking.

[0031] In some aspects, the techniques described herein relate to a device, in which the one or more processors are further configured to: acquire one or more satellite images, create a plurality of image tiles from the one or more satellite images, and detect a plurality of parking spaces from the plurality of image tiles.

[0032] In some aspects, the techniques described herein relate to a device in which one or more processors are configured for parking space line color and type when one or more parking spaces are located.

[0033] In some aspects, techniques described herein relate to a method of operating a parking space detection system, including: analyzing one or more image tiles for parking spaces; detecting a plurality of parking spaces from the one or more image tiles; analyzing the plurality of parking spaces for erroneous parking spaces; removing the detected erroneous parking spaces from the plurality of parking spaces; forming a set of the remaining plurality of parking spaces; determining one or more parking space attributes for the remaining plurality of parking spaces; analyzing the image tiles for uncertain parking spaces based on the remaining plurality of parking spaces; determining at least one uncertain parking space based on the remaining plurality of parking spaces; determining one or more parking space attributes for the at least one uncertain parking space based on the attributes determined from at least some of the remaining plurality of parking spaces; storing the remaining plurality of parking spaces, the determined at least one uncertain parking space, and their respective associated parking space attributes; and using the detected parking spaces to facilitate vehicle-related activities. [Brief explanation of the drawings]

[0034] [Figure 1] 1 illustrates a parking space detection system according to some implementations of the present disclosure. [Figure 2] FIG. 1 is a block diagram illustrating a parking space detection server according to some implementations of the present disclosure. [Figure 3] 1 is a flow diagram of an example process for training a parking space detection system, according to some implementations of the present disclosure. [Figure 4A] 1 is a flow diagram of an example process for detecting parking spaces and various features / attributes of parking spaces, according to some implementations of the present disclosure. [Figure 4B] 1 is a flow diagram of an example process of image preprocessing and determining one or more features / attributes based on the image preprocessing, according to some implementations of the present disclosure. [Figure 5]1 is an illustration of an image tile creation process that may be used in connection with some systems and methods according to some implementations of the present disclosure. [Figure 6A] 1 is an illustration of the creation of composite image tiles that may be used in connection with some systems and methods according to some implementations of the present disclosure. [Figure 6B] 1 is an illustration of the creation of composite image tiles that may be used in connection with some systems and methods according to some implementations of the present disclosure. [Figure 6C] 1 is an illustration of the creation of composite image tiles that may be used in connection with some systems and methods according to some implementations of the present disclosure. [Figure 6D] 1 is an illustration of the creation of composite image tiles that may be used in connection with some systems and methods according to some implementations of the present disclosure. [Figure 7] 1 is an illustration of a parking space detection method that may be used in connection with some systems and methods according to some implementations of the present disclosure. [Figure 8] 1 is an illustration of image pre-processing of a parking space that may be used in connection with some systems and methods according to some implementations of the present disclosure. [Figure 9] 1 is a flow diagram of an example process for creating a composite image tile from image tiles, according to some implementations of the present disclosure. DETAILED DESCRIPTION OF THE INVENTION

[0035] 1 illustrates a parking space detection system 100 according to some implementations of the present disclosure. In some implementations, the parking space detection system 100 may include an end user device 110, a network 130, and a parking space detection server 140.

[0036] In some implementations, end user device 110 may comprise a stand-alone computing device. By way of non-limiting example, end user device 110 may comprise one or more of a server, a desktop computer, a laptop computer, a handheld computer, a tablet computing platform, a notebook, a smartphone, an in-vehicle computer (e.g., an in-vehicle infotainment "IVI" system), and / or other computing device or platform. In some implementations, end user device 110 may be used to receive user inputs and commands that may be communicated to parking space detection server 140. For example, end user device 110 may be used by a user to interface with parking space detection server 140 to configure parking space detection server 140 to train one or more machine learning models with training images. In some implementations, end user device 110 may be used by a user to acquire images for detecting parking spaces that are provided to parking space detection server 140 for processing. In some implementations, the end user device 110 may be an IVI that requests information about one or more detected parking spaces from the parking space detection server 140. The end user device 110 may include, but is not limited to, a user interface device such as a computer monitor, a touch screen, buttons, a keyboard, etc. The end user device 110 may include one or more processors, one or more types of non-transitory memory devices (e.g., RAM, ROM, etc.), a network interface device, etc. In some implementations, the parking space detection system 100 may include one or more end user devices 110. In some implementations, the end user device 110 is in direct or indirect communication with the parking space detection server 140. In some implementations, the end user device 110 is in communication with the parking space detection server 140 via the network 130.

[0037] In some implementations, the end user device 110 may include one or more geographical information system (GIS) modules. In some implementations, a user of the end user device 110 may use the GIS module to tag (e.g., mark) or define one or more objects in an image, e.g., a satellite image. In some implementations, a user of the end user device 110 may use the GIS module to tag objects, such as parking spaces, in one or more images. In some implementations, a user of the end user device 110 may also use the GIS module to tag or define features / attributes of the tagged parking spaces. For example, the features of the tagged parking spaces may include, but are not limited to, line color, surface type, line type, shape, and paint color. In some implementations, tagged objects in images, such as parking spaces, can be used to train machine learning (ML) or artificial intelligence (AI) systems to find and tag / mark / define similar objects and features associated with the objects. In some implementations, images tagged using the GIS module can be sent to parking space detection server 140 to train the ML or AI system stored on parking space detection server 140. It should also be understood that in some implementations, the GIS module can be stored and executed from parking space detection server 140 or some other suitable device or system.

[0038] In some implementations, parking space detection system 100 includes at least one network, such as network 130, that can be used to communicate between one or more devices or nodes in parking space detection system 100. In some implementations, the devices or nodes in parking space detection system 100 can include, but are not limited to, end user device 110 and parking space detection server 140. In some implementations, network 130 is a wide area network (WAN). In some implementations, network 130 is multiple WANs. In some implementations, network 130 is one or more local area networks (LANs). In some implementations, network 130 is a combination of one or more LAN networks and one or more WAN networks. In some implementations, the LAN and / or WAN networks are hardwired networks (e.g., Ethernet™, fiber optics, etc.). In some implementations, the one or more LAN and / or WAN networks may be suitable wireless networks (e.g., cellular, WiFi™, Bluetooth™, satellite, etc.). In some implementations, the one or more LAN and / or WAN networks may be a combination of hardwired and wireless networks. For example, the parking space detection server 140 may communicate with the end user device 110 through one or more network devices (e.g., routers, switches, etc.) in one or more LAN environments, one or more WAN environments, or some combination of the foregoing. In some implementations, for example, if the parking space detection server 140 is located in some proximity to the end user device 110 (e.g., within a distance suitable for LAN communication), the two devices may communicate via one or more LANs.In some implementations, if the parking space detection server 140 is not physically located in some proximity to where the end user device 110 is located, the two devices may communicate over one or more WANs (e.g., the Internet and / or a private network). It should be understood that any suitable network environment or combination of network environments may be used for communication between the various devices or nodes in the parking space detection system 100.

[0039] In some implementations, parking space detection server 140 includes a computer and / or server. By way of non-limiting example, parking space detection server 140 may include one or more of a server, a desktop computer, a laptop computer, a handheld computer, a tablet computing platform, and / or other computing platforms. In some implementations, parking space detection server 140 includes multiple computers and / or multiple servers. In some implementations, server 140 is a computer, a physical machine and / or a virtual machine instance and / or several combined machines or virtual instances, which may be stored in a data center. In some implementations, parking space detection server 140 may include interface devices such as, but not limited to, a computer monitor, a touch screen, buttons, a keyboard, etc. In some implementations, parking space detection server 140 may include one or more processors, one or more types of non-transitory memory devices (e.g., RAM, ROM, etc.), a network interface device, etc. Further details of some implementations of the parking space detection server 140 are discussed below, for example, with respect to Figures 2, 3, 4A, 4B, 5, 6A, 6B, 6C, 6D, 7, 8, and 9.

[0040] FIG. 2 is a block diagram illustrating a parking space detection server 200 according to some implementations of the present disclosure. In some implementations, the parking space detection server 200 illustrated in FIG. 2 is one possible implementation of the parking space detection server 140 described above. In some implementations, the parking space detection server 200 may include one or more computing platforms. The parking space detection server 200 may be configured to communicate with one or more devices (e.g., end user devices 110, other servers, etc.) according to a client / server architecture, a peer-to-peer architecture, a distributed computing architecture, and / or other suitable architecture. A user may access the parking space detection server 200 through a device (e.g., an end user device 110 and / or other suitable device). In some implementations, the parking space detection server 200 may include one or more processors 202, one or more electronic storage devices 215 (e.g., non-transitory memory devices), and machine-readable instructions 204.

[0041] The parking space detection server 200 may be configured with machine-readable instructions 204. The machine-readable instructions 204 may include one or more instruction modules. The instruction modules may include computer program modules. The instruction modules may include one or more of an image tile module 210 and a parking space detection module 220, and / or other instruction modules.

[0042] In some implementations, the image tile module 210 is configured to execute and run on the parking space detection server 200. In some implementations, the image tile module 210 is configured to provide images for the parking space detection module 220 to process. In some implementations, the image tile module 210 includes one or more ML or AI modules. In some implementations, the image is a satellite image. In some implementations, the image tile module 210 is configured to divide the image into one or more smaller segments. In some implementations, the image tile module 210 may divide the image into segments to create one or more image tiles of the image. In some implementations, the image tile module 210 may associate one or more georeferenced locations with one or more of the image tiles. In some implementations, the georeferenced locations associated with the image tile may include georeferenced locations of one or more sides of the image tile. FIG. 5 shows a satellite image 510. In some implementations, the satellite image 510 may be divided into one or more segments or image tiles. In some implementations, as shown in FIG. 5 , the satellite image 510 is divided into multiple image tiles according to image tile dividers 515 (e.g., nine visible image tiles). It should be understood that the satellite image 510 may be divided into any suitable number of image tile segments (e.g., none, one or more, more than nine image tiles, fewer than nine image tiles, etc.). In some implementations, one or more individual image tiles of the satellite image 510 may be associated with georeferenced data. As an illustration, arrow 517 indicates an image tile 520 of the satellite image 510 that has been selected to have associated georeferenced data on one or more sides of the image tile 520. As shown in FIG. 5 , the edges of the image tile 520 are associated with latitude and longitude georeferenced data, as shown as image tile 530.In some implementations, one or more, or all, of the image tiles created by image tile divider 515 are associated with georeferenced data, such as image tile 520. Earth 540 is shown solely for reference to indicate latitude and longitude. In some implementations, image tile module 210 of parking space detection server 200 may store the created image tiles in electronic storage 215 or some other suitable storage location. Although parking space detection server 200 is shown as having image tile module 210 for creating tile segments, in some implementations, the images and image tiles used by parking space detection server 200 may be obtained from one or more alternative sources. In some implementations, if parking space detection server 200 does not need to process images into image segments, parking space detection server 200 does not include image tile module 210.

[0043] In some implementations, the image tile module 210 is configured to create a composite image tile (also referred to herein as a composite image tile) from multiple image tiles. FIG. 9 is a flow diagram of an example process for creating a composite image tile from an original image tile (e.g., an image tile such as the image tile shown in satellite image 510 in FIG. 5 ) according to some implementations of the present disclosure. In some implementations, the composite image tile can be used along with the original image tile in detecting parking spaces. The composite image tile can help improve the accuracy of parking space detection by creating a new image tile from the original image tile to better represent a parking space that may be segmented or difficult to recognize by machine vision when viewed in one or more original image tiles (e.g., see FIG. 6B ). In some implementations, one or more process blocks of FIG. 9 can be implemented by a device, such as the parking space detection server 200, some other suitable device, or a combination of devices. In some implementations, the image tile module 210 of the parking space detection server 200 can implement the process 900 of FIG. 9 . In some implementations, the process 900 may be performed by other modules, for example, the parking space detection module 220.

[0044] As shown in FIG. 9 , at 904, in some implementations, process 900 may include, for an original image tile with a detected right-neighbor image tile, the image tile module 210 selecting a portion of the original image tile and a portion of the right-neighbor image tile to form a first composite image tile associated with the original image tile. FIG. 6A illustrates the formation of a composite image tile from two adjacent image tiles, e.g., image tile 610 and image tile 620, created from a larger satellite image. For example, image tile 610 may correspond to image tile 512 from satellite image 510 of FIG. 5 , and image tile 620 may correspond to image tile 514 from satellite image 510 of FIG. 5 . For purposes of describing 904, image tile 610 may be the original image tile, and image tile 620 may be the detected right-neighbor image tile. In some implementations, image tile 610 is considered the original image tile because it is the focus of analysis for creating the new composite image tile. In some implementations, when image tile 620 is the focus of analysis to create a new composite image tile, then image tile 620 can be considered the original image tile. Dotted line 625 indicates the division point between image tile 610 and image tile 620. Close-up 627 in FIG. 6B of portions of image tile 610 and image tile 620 shows that dotted line 625 crosses a parking space. It should be understood that in some implementations, image tile 610 and image tile 620 may have different portions of an object, such as the same parking space, within their respective image tiles. In some implementations, when such a division occurs, it can be difficult for parking space detection server 200 to detect a partial object, such as a partial parking space, within image tile 610 or image tile 620 by itself. In some implementations, to address this deficiency, image tile module 210 can create a composite image tile from multiple image tiles. As shown in FIG. 6A, image tile module 210 may select a portion of an image in image tile 610 and a portion of an image in image tile 620 to create a composite image tile 630.In some implementations, composite image tile 630 includes the entire object, e.g., the divided parking space shown in close-up 627 of Figure 6B, in one composite image tile to reduce or eliminate the possibility that parking space detection server 200 may miss an object divided among multiple image tiles. Any suitable portions of image tile 610 and image tile 620 may be selected to create the composite image tile.

[0045] In some implementations, this first composite image tile may be labeled as associated with the original image tile. In some implementations, the original image tile and one or more composite tiles created based on the original image tile may form a related set of image tiles. In some implementations, the original image tile is labeled as index 0 (or with some other suitable distinguishing label) within the related set of image tiles. In some implementations, the first composite tile may be labeled as index 1 (or with some other suitable distinguishing label) within the related set of image tiles. In some implementations, when a parking space is detected (e.g., as described in FIG. 4A ), the detected parking space may be assigned a label associated with the original image tile from which it was derived. For example, in some implementations, if the detected parking space is found within the original image tile, the detected parking space may be labeled as associated with original image tile index 0. As a further example, in some implementations, if the detected parking space is found within the first composite image tile, the detected parking space may be labeled as associated with first composite image tile index 1. In some implementations, the labeling of related image tiles and detected parking spaces from these image tiles may be useful when performing a de-duplication process (e.g., removing or otherwise eliminating duplicate detected parking spaces that may arise when using composite image tiles), as discussed below in FIG. 4A.

[0046] Although FIG. 6A shows left and right neighbor image tiles that may be used to create the composited image tile, image tiles may be created from other image tile combinations. For example, a portion of an image tile below image tile 610 may be combined with image tile 610 to create the composited image tile. In some implementations, portions of three or more image tiles may be combined to create the composited image tile. In some implementations, composited image tile 630 may be stored in electronic storage 215. It should be understood that composited image tile 630 may be stored in any suitable database in any location. In some implementations, composited image tile 630 is not stored in a database but is created at runtime, while the image tile is analyzed and held in temporary memory for parking space detection purposes, for example, by parking space detection module 220. It should be understood that in some implementations, if image tile module 210 does not detect a right neighbor image tile of the original image tile, image tile module 210 does not perform 904 of FIG. 9. As an example, if the image tile module 210 were processing image tile 513 in FIG. 5, the image tile module 210 may determine that image tile 513 does not have a right neighbor image tile, and therefore the image tile module 210 may not perform 904 in FIG. 9 for image tile 513.

[0047] Returning to FIG. 9 , block 906 illustrates a second composite image tile that may be created from an original image tile, e.g., image tile 610. In some implementations, for an original image tile with a detected right-neighbor image tile, a detected bottom-adjacent image tile, and a detected diagonally below-right image tile, the image tile module 210 may select portions of the original image tile, the right-neighbor image tile, the bottom-adjacent image tile, and the diagonally below-right image tile to form a second composite image tile associated with the original image tile. FIG. 6C illustrates an example of block 906 of FIG. 9 , in which adjacent and diagonal image tiles and the original image tile 610 may be used to form the second composite image tile. In some implementations, the image tile module 210 may determine that the original image tile 610 has a detected right-neighbor image tile 620, a detected bottom-adjacent image tile 612, and a detected diagonally below-right image tile 614. In some implementations, the detected bottom-adjacent image tile 612 corresponds to image tile 518, and the detected diagonally below-right image tile 614 corresponds to image tile 519. In some implementations, the image tile module 210 may select portions of the original image tile 610, the right-adjacent image tile 620, the bottom-adjacent image tile 612, and the diagonally below-right image tile 614, as indicated by dotted line 632. It should be understood that any appropriate portions of each of the original image tile 610, the right-adjacent image tile 620, the bottom-adjacent image tile 612, and the diagonally below-right image tile 614 may be selected to form the second composite image tile. In some implementations, the area selected based on dotted line 632 becomes the second composite image tile 634. In some implementations, this second composite image tile may be labeled as related to the original image tile. In some implementations, the original image tile, the first composite image tile, and the second composite image tile created based on the original image tile are part of a related set of image tiles.In some implementations, the second composite image tile is labeled with index 2 (or some other suitable distinguishing label) within the associated set of image tiles. In some implementations, the composited image tile 634 may be stored in electronic storage 215. It should be understood that the composited image tile 634 may be stored in any suitable database in any location. In some implementations, the composited image tile 634 is not stored in a database but is created at runtime, while the image tile is analyzed and held in temporary memory for purposes of parking space detection, for example, by parking space detection module 220. It should be understood that in some implementations, if the image tile module 210 does not detect an image tile to the right, a bottom adjacent image tile, or a diagonally lower-right image tile of the original image tile, the image tile module 210 does not perform 906 of FIG. 9 . As an example, if the image tile module 210 were processing image tile 513 in FIG. 5, the image tile module 210 may determine that image tile 513 does not have a right neighbor image tile, and therefore the image tile module 210 may not perform 906 in FIG. 9 for image tile 513.

[0048] In some implementations, a third composite image tile may be created from the original image tile, e.g., image tile 610, as shown in FIG. 9 at 908. In some implementations, for an original image tile with a detected bottom-adjacent image tile, the image tile module 210 may select a portion of the original image tile and the bottom-adjacent image tile to form a third composite image tile related to the original image tile. FIG. 6D shows an example of block 908 of FIG. 9, in which the original image tile 610 with the bottom-adjacent image tile may be used to form the third composite image tile. In some implementations, the image tile module 210 may determine that the original image tile 610 has a detected bottom-adjacent image tile 612. In some implementations, the detected bottom-adjacent image tile 612 corresponds to image tile 518. In some implementations, the image tile module 210 may select the original image tile 610 and a portion of the bottom-adjacent image tile 612 as shown by dotted line 636. It should be understood that any suitable portion of each of the original image tile 610 and the bottom-adjacent image tile 612 may be selected to form the third composite image tile. In some implementations, the area selected based on the dotted line 636 becomes the third composite image tile 638. In some implementations, this third composite image tile may be labeled as related to the original image tile. In some implementations, the original image tile, the first composite image tile created based on the original image tile, the second composite image tile, and the third composite image tile are part of a related set of image tiles. In some implementations, the third composite image tile is labeled as index 3 (or with some other suitable distinguishing label) within the related set of image tiles. In some implementations, the composite image tile 638 may be stored in the electronic storage device 215. It should be understood that the composite image tile 638 may be stored in any suitable database in any location.In some implementations, the composite image tile 638 is not stored in a database but is created at runtime, while the image tiles are analyzed and kept in temporary memory for purposes of parking space detection, for example, by the parking space detection module 220. It should be understood that in some implementations, if the image tile module 210 does not detect a bottom adjacent image tile for the original image tile, the image tile module 210 does not perform 908 of Figure 9. As an example, if the image tile module 210 was processing the processed image tile 518 in Figure 5, 210 may determine that the image tile 518 does not have a bottom adjacent image tile, thereby 210 may not perform 908 of Figure 9 for the image tile 518.

[0049] It should be understood that process 900 of FIG. 9 may be repeated for one or more image tiles. In some implementations, for example, the image tile module 210 may determine whether there are additional image tiles to process, as shown at 901 of FIG. 9 . In some implementations, if the image tile module 210 determines that there is at least one additional image tile to process, the image tile module 210 may begin process 900 again, as shown at 912 of FIG. 9 . For example, process 900 may begin again at 904 for the next image tile. In some implementations, process 900 may be repeated for one or more image tiles, e.g., image tiles within satellite image 510. In some implementations, process 900 may begin with the upper left image tile 512 within satellite image 510 and pass through the aforementioned blocks in process 900. In some implementations, image tile module 210 may go through process 900 proceeding from the left-most image tile to the right-most image tile, e.g., from image tile 511 in satellite image 510 to image tile 513 in satellite image 510. In some implementations, image tile module 210 may then continue process 900 with the next row below image tile 511. Although process 900 has been described as being performed on image tiles from left to right, process 900 may be reconfigured to move in any suitable direction, e.g., from right to left, top to bottom, or bottom to top, in various different implementations. It should also be understood that one or more blocks in process 900 may also be reconfigured as needed to create composite image tiles from original image tiles in a different direction than described in FIG. 9 , e.g., analyzing the left-neighbor image tile rather than the right-neighbor image tile.

[0050] 9 shows example blocks of process 900, in some implementations, process 900 may include additional blocks, fewer blocks, different blocks, or blocks arranged differently than shown in FIG 9. Additionally or alternatively, multiple of the blocks of process 900 may be performed in parallel.

[0051] As mentioned above, synthesized image tiles are used to supplement image tiles in the analysis of objects, e.g., parking spaces, in satellite imagery. The use of synthesized image tiles for image processing and analysis is an improvement over other image processing methods for detecting parking spaces. Creating synthesized image tiles for image processing using the sampling methods described with respect to Figures 6A, 6B, 6C, 6D, and 9 (e.g., as further described with respect to Figure 4A) uses less memory and computer processing power than other image analysis methods for analyzing objects (e.g., parking spaces) in images, and also allows for faster processing of images (e.g., to detect parking spaces) than other image analysis methods.

[0052] In some implementations, the parking space detection module 220 is configured to execute and run on the parking space detection server 200 to detect parking spaces and features associated with the detected parking spaces from one or more images. In some implementations, the parking space detection module 220 includes one or more ML models and / or one or more rule-based algorithms to aid in parking space detection. In some implementations that use ML, the one or more ML models are based on convolutional neural network ML models. In some implementations, the parking space detection module 220 may include an ML model for object localization. In some implementations, object localization may include processing functions for visually recognizing objects, such as parking spaces, within an image. In some implementations, the parking space detection module 220 may include an ML model for object detection. In some implementations, the object detection processing functions may focus on certain special features associated with the object, such as special signs (e.g., handicapped access, emergency snow routes, no-parking days / times, etc.). In some implementations, the parking space detection module 220 may include an ML model for parking space classification. In some implementations, the parking space classification processing function may focus on certain characteristics of a parking space (e.g., line type, line color, surface type, etc.). It should be understood that other suitable ML or AI models may be used for parking space detection. In some implementations, a rule-based algorithm may be used for one or more characteristics of parking space classification, such as symmetric space detection, parking space angle (e.g., rectangular, parallelogram), etc. In some implementations, the parking space detection module 220 may be configured to detect parking spaces and features associated with the detected parking spaces from satellite imagery, image tiles derived from satellite imagery and synthesized image tiles, or other image sources. In some implementations, the parking space detection module 220 may obtain images for processing from any suitable source.In some implementations, parking space detection module 220 may retrieve images for processing from electronic storage 215 or other suitable electronic storage system. In some implementations, parking space detection module 220 is associated with one or more databases, e.g., PostgreSQL™, PostGIS™, Microsoft™ SQL Server databases, for storing images, image tiles, tagged parking spaces, tagged features of parking spaces, auxiliary and core data used in operating parking space detection module 220 and serving as a repository of any suitable data resulting from parking space detection using parking space detection module 220.

[0053] Although certain features and functionality of the image tile module 210 and / or the parking space detection module 220 have been described, it should be understood that the features and functionality of these modules are not limited to the description herein. Furthermore, additional features and functionality of the parking space detection server 200 and its modules are described in further detail below.

[0054] In some implementations, parking space detection server 200 may be operably linked to other devices via one or more electronic communication links. For example, such electronic communication links may be established, at least in part, via a network, such as the Internet and / or other networks. It should be understood that this is not intended to be limiting, and the scope of the present disclosure includes implementations in which parking space detection server 200 may be operably linked to other devices via any other suitable communication medium. In some implementations, parking space detection server 200 may be operably linked to other parking space detection servers via suitable communication media. As a non-limiting example, a given parking space detection server 200 may include one or more of a server, a desktop computer, a laptop computer, a handheld computer, a tablet computing platform, and / or other computing platforms.

[0055] Parking space detection server 200 may include electronic storage 215, one or more processors 202, and / or other components. Parking space detection server 200 may include communication lines or ports to enable the exchange of information with networks and / or other computing platforms. The illustration of parking space detection server 200 in FIG. 2 is not intended to be limiting. Parking space detection server 200 may include multiple hardware, software, and / or firmware components that operate together to provide the functionality attributed herein to parking space detection server 200. For example, parking space detection server 200 may be implemented by a cloud of computing platforms that operate together as parking space detection server 200.

[0056] The electronic storage 215 may comprise a non-transitory storage medium that electronically stores information. The electronic storage medium of the electronic storage 215 may include one or both of a system storage device provided integrally (e.g., substantially non-removably) with the parking space detection server 200 and / or a removable storage device removably connectable to the parking space detection server 200 via, for example, a port (e.g., a USB port, a Firewire port, etc.) or a drive (e.g., a disk drive, etc.). The electronic storage 215 may include one or more of an optically readable storage medium (e.g., an optical disk, etc.), a magnetically readable storage medium (e.g., a magnetic tape, a magnetic hard drive, etc.), a charge-based storage medium (e.g., an EEPROM, a RAM, etc.), a solid-state storage medium (e.g., a flash drive, etc.), and / or other electronically readable storage medium. The electronic storage 215 may include one or more virtual storage resources (e.g., cloud storage, a virtual private network, and / or other virtual storage resources). The electronic storage device 215 may store software algorithms, information determined by the processor 202, information received from the parking space detection server 200, information received from other devices (e.g., end user devices 110, vehicles, etc.), and / or other information that enables the parking space detection server 200 to function as described herein.

[0057] The processor 202 may be configured to provide information processing capabilities in the parking space detection server 200. As such, the processor 202 may include one or more of a digital processor, an analog processor, a digital circuit designed to process information, an analog circuit designed to process information, a state machine, and / or other mechanisms for electronically processing information. Although the processor 202 is depicted in FIG. 2 as a single entity, this is for illustrative purposes only. In some implementations, the processor 202 may include multiple processing units. These processing units may be physically located within the same device, or the processor 202 may represent the processing functionality of multiple devices operating in concert. The processor 202 may be configured to execute the image tile module 210, the parking space detection module 220, and / or other modules. The processor 202 may be configured to execute the image tile module 210, the parking space detection module 220, and / or other modules via software, hardware, firmware, any combination of software, hardware, and / or firmware, and / or other mechanisms for configuring processing capabilities on the processor 202. As used herein, the term "module" may refer to any component or set of components that implements the functionality ascribed to the module, which may include one or more physical processors in execution of processor-readable instructions, processor-readable instructions, electrical circuitry, hardware, storage media, or any other component.

[0058] 2 as being implemented within a single processing unit, it should be understood that in implementations in which processor 202 includes multiple processing units, one or more of image tile module 210 and parking space detection module 220 may be implemented remotely from the other modules. The description of functionality provided by different image tile modules 210 and parking space detection modules 220 below is for illustrative purposes and not intended to be limiting, as any one of image tile modules 210 and parking space detection modules 220 may provide more or less functionality than described. For example, one or more of image tile modules 210 and / or parking space detection modules 220 may be eliminated, with some or all of its functionality provided by other ones of image tile modules 210 and / or parking space detection modules 220. As another example, processor 202 may be configured to execute one or more additional modules that may implement some or all of the functionality attributed below to one of image tile module 210 and / or parking space detection module 220. As previously mentioned, one or more processors in a server different from parking space detection server 200 may be configured to execute some or all of the functionality provided by image tile module 210 and / or parking space detection module 220.

[0059] FIG. 3 is a flow diagram of an example process 300 for training a parking space detection system according to some implementations of the present disclosure. In some implementations, the parking space detection system processes images using ML and / or AI to detect parking spaces within the images. In some implementations, the ML and AI may be trained and optimized to process images efficiently and accurately. In some implementations, one or more process blocks of FIG. 3 may be performed by a device, such as the parking space detection server 140, the end user device 110, some other suitable device, or a combination of devices. For purposes of discussion herein, the process will be described with respect to a system using the end user device 110 and the parking space detection server 140.

[0060] In some implementations, at 302, a set of training data may be created based on one or more images. In some implementations, the training data is created by identifying and tagging one or more parking spaces in one or more images. In some implementations, the process of tagging one or more parking spaces may include identifying additional features of the tagged parking spaces. For example, in some implementations, the additional features of the tagged parking spaces may include, but are not limited to, line color, surface type, line type, shape, paint color, etc. The features of the tagged parking spaces may be stored in association with the tagged parking spaces. In some implementations, the process of creating training data is performed manually. In some implementations, a user, e.g., a user of end user device 110, may run a geographic information system (GIS) program to tag / mark parking spaces and associated features found in one or more images, e.g., satellite images. In some implementations, the tagged / marked parking spaces are saved for later use, for example, by the parking space detection server 140. In some implementations, a user may create the training data on the end user device 110. In some implementations, a user may create the training data on another suitable device, for example, a server. In some implementations, the server is the parking space detection server 140. In some implementations, the parking space detection server 140 may include a GIS module or training module to allow a user to create the training data. In some implementations, the training data may be automated. In some implementations, some portions of the training data may be obtained from other sources, for example, OpenStreetMap™. In some implementations, the training data includes thousands of tagged parking spaces. It should be understood that the training data may include any suitable number of tagged parking spaces.In some implementations, the greater the number of tagged parking spaces and the greater the variety of tagged parking spaces, the better and more accurate the ML and / or AI in the parking space detection server 140 will be in detecting parking spaces and associated features in subsequently processed images.

[0061] In some implementations, additional training data may be created from the augmented data about the tagged / marked parking spaces. For example, image data of a tagged parking space may be duplicated and modified to create additional tagged parking spaces (e.g., augmented data). In some implementations, a tagged parking space may be rotated a predetermined amount, e.g., 90 degrees, 180 degrees, or some other suitable amount, to create one or more additional tagged parking spaces from the original tagged parking space for addition to the training data. In some implementations, a tagged parking space may have one or more filters applied to the image data to create one or more new tagged parking spaces for addition to the training data. As one example, a black and white filter may be applied to a tagged parking space to modify the image and create new tagged parking spaces for addition to the training data. As another example, a color or light / dark adjustment filter may be applied to a tagged parking space to modify the image and create new tagged parking spaces for addition to the training data. Another suitable number of different filters may be applied to the tagged parking spaces to modify the images and create new tagged parking spaces to add to the training data. In some implementations, these new tagged parking spaces from the original tagged parking spaces serve to augment the training data from the original tagged parking spaces and allow a machine learning or artificial intelligence algorithm to learn additional information about images it may encounter in the future. In some implementations, the augmented data is determined based on attributes associated with a particular tagged parking space. For example, if parking space detection server 200 determines that a tagged parking space has one or more unusual attributes, parking space detection server 200 may determine that augmented data should be created from the tagged parking space.For example, if parking space detection server 200 determines that it does not have many tagged parking spaces with blue lines, parking space detection server 200 may create one or more different new tagged parking spaces that are variations of the tagged parking spaces (e.g., one or more rotated images of the tagged parking spaces, one or more reversed images of the tagged parking spaces, one or more color-adjusted images of the tagged parking spaces). These modified new tagged parking spaces allow the machine learning or artificial intelligence model to learn more variations of parking spaces with blue lines that may not have been in the original data set of training data. In some implementations, if parking space detection server 200 determines that the tagged parking space has few or no attributes that are unusual in the training data, parking space detection server 200 may not create augmented data for the tagged parking space. In some implementations, if parking space detection server 200 determines that a tagged parking space has one or more attributes that are rare, parking space detection server 200 may rank the rarity and determine how many enhanced data variations to create for the tagged parking space based on the rarity. In some implementations, for tagged parking spaces with one or more attributes that appear less than a first predetermined threshold (e.g., appearing in less than 10% of the training data or some other suitable threshold), parking space detection server 200 may create three or more enhanced data variations for the tagged parking space. In some implementations, for tagged parking spaces with one or more attributes that appear less than a second predetermined threshold (e.g., appearing in less than 40% of the training data or some other suitable threshold), parking space detection server 200 may create multiple enhanced data variations for the tagged parking space.In some implementations, for tagged parking spaces having one or more attributes that appear below a third predetermined threshold (e.g., appearing below 70% of the training data or some other suitable threshold), the parking space detection server 200 may create one or more enhanced data modifications for the tagged parking space. It should be understood that the number of enhanced data modifications created for a tagged parking space may be set at any suitable number at any suitable threshold level. It should be understood that the threshold level for determining rarity may be set at any suitable threshold level, and that any number of different rarity threshold levels may be set.

[0062] In some implementations, the parking space detection server 140 may be trained using the created tagged images in the training data set using standard techniques for training ML or AI-based systems at 304. For example, the parking space detection module 220 in the parking space detection server 200 may be trained using the tagged parking spaces and images with identified features in the training data set.

[0063] In some implementations, at 306, the parking space detection server 140 is tested using one or more test images. In some implementations, the testing includes providing the test images to the parking space detection server 140 to detect parking spaces in the test images and to determine features associated with the detected parking spaces. In some implementations, the test images are satellite images including parking spaces. In some implementations, the parking space detection server 140 outputs identified (tagged / marked) parking spaces from the test images and tagged features associated with the identified parking spaces.

[0064] In some implementations, at 308, output from the parking space detection server 140 may be evaluated against ground truth data. In some implementations, test images may be individually and manually tagged (for parking spaces) and associated features identified with the tagged parking spaces to create ground truth data. In some implementations, the ground truth data may be created manually. In some implementations, the output of the parking space detection server 140 (e.g., parking spaces detected / tagged by the parking space detection server 140) is compared to the ground truth data to determine errors and the accuracy of the parking space detection server 140 in detecting parking spaces and identifying associated features. In some implementations, the results of the evaluation against the ground truth data test may identify areas for adjustment of the parking space detection server 140 to produce more accurate results. In some implementations, at 310, the parking space detection server 140 may be adjusted based on the results of the evaluation. In some implementations, after an adjustment is made to parking space detection server 140, the testing at 306, evaluation at 308, and adjustment at 310 may be performed one or more additional times. In some implementations, the testing at 306, evaluation at 308, and adjustment may be performed until a predetermined threshold level of accuracy is achieved or the error is below a predetermined threshold level of error.

[0065] FIG. 4A is a flow diagram of an example process for detecting parking spaces and various features of parking spaces according to some implementations of the present disclosure. In some implementations, one or more process blocks in FIG. 4A may be performed by a device, such as the parking space detection server 200, some other suitable device, or a combination of devices. As shown in FIG. 4A , at 402, in some implementations, the process 400 may include analyzing one or more image tiles of a parking space (as well as composited image tiles). For example, the parking space detection server 200 may be provided with one or more image tiles, and the parking space detection server 200 may analyze the one or more image tiles for features associated with the parking space and any detected parking spaces. As an example, FIG. 7 shows an input image tile 710 (e.g., an image tile) provided to the parking space detection server 200 for analysis. In some implementations, the parking space detection module 220 of the parking space detection server 200 performs one or more of the functions discussed in FIG. 4A .

[0066] As also shown in FIG. 4A , at 404, in some implementations, process 400 may include parking space detection server 200 detecting one or more parking spaces or multiple parking spaces from one or more image tiles (e.g., original image tiles and / or synthetic image tiles). In some implementations, 404 is an object localization process for visually recognizing objects, e.g., parking spaces, within an image. In some implementations, parking space detection module 220 of parking space detection server 200 may process input image tiles 710 to analyze for parking spaces. As an example, FIG. 7 shows a convolutional neural network (CNN)-based parking detection module 720 of parking space detection module 220 processing convolutional layers derived from input image tiles 710. In some implementations, the resulting output from parking space detection module 220 may include one or more predictions of parking spaces detected from input image tiles 710. 7 shows the parking space detection module 220 prediction for a detected parking space 730. In some implementations, the above process is repeated for one or more image tiles provided to the parking space detection server 200.

[0067] As described above, the parking space detection module 220 may tag / mark and store the detected parking spaces from the image tiles. In some implementations, tagging / marking the detected parking spaces may include storing geo-referenced coordinates of the detected parking spaces. In some implementations, tagging / marking the detected parking spaces may include storing determined attribute information associated with the detected parking spaces. In some implementations, tagging / marking and storing may include the parking space detection module 220 creating and storing individual images of the detected parking spaces from the image tiles. In some implementations, tagging / marking may include associating additional information with one or more detected parking spaces. In some implementations, the additional information includes the provenance of the detected parking spaces (e.g., whether the detected parking spaces were derived from the original image tile or a particular composite image tile). For example, for a parking space detected from an original image tile (e.g., image tile 610), parking space detection module 220 may associate the detected parking space with a label such as index 0 to indicate that the detected parking space was derived from the original image tile. For a parking space detected from a composite image tile (e.g., composite image tile 630), parking space detection module 220 may associate the detected parking space with a label such as index 1 to indicate that the detected parking space was derived from the composite image tile. Another detected parking space may be associated with a different index value depending on the original image tile or composite image tile from which it was derived. In some implementations, the additional information may include, but is not limited to, information identifying a particular image tile (e.g., image tile 610 vs. image tile 620 vs. composited image tile 630).

[0068] In some implementations, as shown in FIG. 7 , the parking space detection server 200 may provide an output 740 indicating detected / tagged parking spaces derived from analyzing one or more input image tiles (e.g., original image tiles and / or composite image tiles). In some implementations, the parking space detection server 200 may be provided with input image tiles of an entire town, city, or country and develop a map of detected parking spaces within the image tiles. In some implementations, the input image tiles may also include composited tiles as well as other images, as discussed herein. In some implementations, images other than those in image tile format may be processed by the parking space detection server 200 to detect parking spaces. It should be understood that in some implementations, the parking space detection server 200 may be configured to perform additional analysis and processing to develop more accurate data with further details related to the detected parking spaces. In some implementations, the parking space detection server 200 stores the detected and tagged parking spaces in one or more databases, for example, in the electronic storage device 215.

[0069] Returning to FIG. 4A , at 406, in some implementations, process 400 may include parking space detection server 200 analyzing the multiple detected parking spaces for overlapping detected parking spaces and removing the overlapping detected parking spaces. In some implementations, detecting parking spaces from the composited image tiles causes parking space detection server 200 to detect and tag one or more parking spaces multiple times (e.g., once during analysis of the original input image tile and potentially once or more times after detecting the parking space in one or more composited image tiles created from the original image tile, which may create one or more overlapping detected parking spaces). As an example, FIG. 6A shows image tile 610 sharing multiple parking spaces with composited image tile 630. In some implementations, parking space detection server 200 may detect parking spaces in image tile 610 that are the same as parking spaces detected in composited image tile 630, as discussed with respect to block 404. In some implementations, parking space detection server 200 may be configured to analyze detected parking spaces for a threshold level of overlap. For example, in some implementations, if parking space detection server 200 determines that two detected parking spaces overlap by more than 50% (e.g., based on a comparison of latitude and longitude coordinates associated with the detected parking spaces), parking space detection server 200 may determine that the detected parking spaces are duplicates. It should be understood that the threshold percentage geometric overlap between two detected parking space geometries may be any suitable percentage. In some implementations, if parking space detection server 200 determines that two parking spaces overlap by less than the threshold percentage, parking space detection server 200 may consider the spaces to be unique spaces, neighboring spaces, or adjacent spaces and may keep a record of both detected spaces in an appropriate database.

[0070] 4A , in some implementations, upon detecting that two parking spaces are duplicates, at 406, the parking space detection server 200 may remove one of the detected parking spaces considered to be a duplicate (e.g., the parking space detected from the composited tile). In some implementations, the parking space detection server 200 may flag one of the detected overlapping parking spaces as a duplicate instead of removing the overlapping parking space (e.g., to avoid using the overlapping parking space in a subsequent analysis or application of the detected parking spaces). It should be understood that in some implementations, the parking space detection server 200 may be configured to remove overlapping parking spaces determined from the original image tiles but not those determined from the composited image tiles. In some implementations, the remaining detected parking spaces may form a set of remaining parking spaces (also referred to herein as a new set of detected parking spaces).

[0071] In some implementations, the process of the parking space detection server 200 determining and removing overlapping detected parking spaces in block 406 includes creating a new set of detected parking spaces (e.g., a set of the remaining multiple parking spaces) that eliminates the overlapping parking spaces. In some implementations, the process of block 406 may use an index or label associated with the detected parking spaces for analysis. In some implementations, a detected parking space (e.g., a parking space detected in block 404) from the original tile (e.g., a detected parking space labeled with index 0) may be added to the new set of detected parking spaces. In some implementations, the parking space detection server 200 analyzes detected parking spaces labeled with index values ​​associated with the composite image tile. For example, in some implementations, the parking space detection server 200 may analyze detected parking spaces labeled with an index value of 1 for detected parking spaces already included in the new set of detected parking spaces. In some implementations, as described above, parking space detection server 200 may compare one or more detected parking spaces labeled with an index value of 1 to the detected parking spaces already included in the new set of detected parking spaces and determine whether there is less than a threshold percentage of overlap with the detected parking spaces in the new set of detected parking spaces. In some implementations, the threshold percentage may be 50% or some other suitable threshold. If a detected parking space with an index value of 1 has less than a specified threshold percentage of overlap with a detected parking space in the new set of detected parking spaces, then the detected parking space with an index value of 1 is also added to the new set of detected parking spaces.On the other hand, if a detected parking space having an index value of 1 has more than a specified threshold percentage of overlap with a detected parking space in the new set of detected parking spaces, then the detected parking space having an index value of 1 is not added to the new set of detected parking spaces (e.g., it is excluded from the new set of detected parking spaces, essentially deleting or removing the overlapping detected parking space). In some implementations, this process is repeated for one or more detected parking spaces having other index values ​​associated with the composite tile (e.g., associated composite tile with index 2, index 3, etc.). It should be understood that the resulting new set of detected parking spaces may delete one or more overlapping parking spaces detected in block 404.

[0072] As discussed herein, in various implementations, one or more blocks in process 400 may be performed in parallel or in a different order. In one such example, blocks 416 and 418 may be performed as soon as a parking space is detected in 404 and before or while performing block 406. In some such implementations, process 400 may use determined parking space attributes associated with one image tile and add such parking space attributes to another related image tile or to another image tile determined to have a certain percentage of overlap. As one example, in some implementations, if a detected parking space with an index value of 1 has more than a specified threshold percentage of overlap with a detected parking space in the new set of detected parking spaces (e.g., a parking space with an index of 0 associated with a parking space with an index of 1 has more than a specified threshold percentage overlap), parking space detection server 200 may be configured to compare the determined parking space attributes between these two detected parking spaces and add and / or replace one or more determined parking space attributes stored in association with the parking space with an index of 0. For example, if the parking space with an index of 1 includes a determined parking space attribute of line color white, while the parking space with an index of 0 does not have a parking space attribute of line color, parking space detection server 200 may add the parking space attribute of line color white to the parking space with an index of 0. Regarding inconsistencies between parking space attributes (both parking spaces have conflicting attributes—for example, the parking space with an index of 0 includes a white line color attribute, while the parking space with an index of 1 includes a blue line color attribute), parking space detection server 200 may use one or more different techniques to resolve the inconsistencies in the stored detected parking space attributes. In some implementations, parking space detection server 200 may resolve the inconsistencies by analyzing the line color attributes determined by one or more other parking spaces near the two parking spaces.In some implementations, if one or more surrounding detected parking spaces have a blue line color attribute, then parking space detection server 200 may determine that the blue line color attribute should replace the white line color attribute of the parking space with an index of 0 (e.g., determining that the parking space with an index of 1 also has a more accurate detected attribute than the detected attribute for the parking space with an index of 0 (e.g., likely the same space)). In another example, in some implementations, parking space detection server 200 may resolve inconsistencies between certain parking space attributes by examining other determined parking space attributes of the two overlapping parking spaces. For example, if a parking space with an index of 1 includes a parking space type attribute for disabled parking, then parking space detection server 200 may determine that the line color attribute of the parking space with an index of 0 should be set to the color typically used for disabled parking spaces in the geographic location (e.g., blue in the United States). Similarly, parking space detection server 200 may determine whether one or both parking spaces (e.g., a parking space with an index of 1 and a parking space with an index of 0) are both identified as their respective handicapped parking spaces in their respective attribute data. In some implementations, parking space detection server 200 may rely on external data sources to resolve such inconsistencies. For example, parking space detection server 200 may compare data from sources such as OpenStreetMap data (or other suitable data sources) to determine additional information / attributes about the parking spaces. For example, OpenStreetMap may include information that certain parking spaces are handicapped parking spaces to help parking space detection server 200 resolve one or more attribute inconsistencies between two overlapping parking spaces. In some implementations, once the attributes are reviewed, the detected overlapping parking spaces may be removed or otherwise eliminated from the resulting new set of detected parking spaces.It should be appreciated that other suitable techniques may be used to resolve detected inconsistencies between the attributes of overlapping parking spaces.

[0073] Returning to FIG. 4A , at 408, in some implementations, process 400 may include parking space detection server 200 analyzing multiple detected parking spaces for erroneous parking spaces. In some implementations, the analysis is performed on detected parking spaces from a new set of detected parking spaces to avoid analyzing duplicate detected parking spaces. In some implementations, one or more objects in an image, e.g., a satellite image, may appear to have lines and contours that look like parking spaces. For example, parking space detection server 200 may determine from a satellite image (or input image tile) that an office building with thin white window trim in a repeating pattern is a parking lot and then tag the area with the thin white window trim as a parking space. In some implementations, to account for these false positive detected parking spaces, parking space detection server 200 may be configured to compare the detected parking spaces to ground truth data. In some implementations, the ground truth data may be, for example, map data identifying the location of buildings. It should be appreciated that having input image tiles with edges georeferenced with appropriate latitude and longitude coordinates will aid the parking space detection server 200 in comparing the input image tiles with the same coordinates in ground truth map data that identify a building or building footprint. In some implementations, the parking space detection server 200 can determine whether a detected parking space is co-located with a building or within a building footprint according to the ground truth map data. In some implementations, if the parking space detection server 200 identifies a parking space that overlaps with a portion of a building footprint, the parking space detection server 200 may be configured to further analyze the identified parking space to determine whether the identified parking space is on a building or garage rooftop. In some implementations, the parking space detection server 200 may be configured to use roadway centerline or roadway graph data to filter out incorrectly identified parking spaces.For example, in some cities, roadway or road markings may appear similar to parking spaces (e.g., white lines defining crosswalks or no-parking zones). In some implementations, the parking space detection server 200 may use roadway data to remove incorrectly identified parking spaces (e.g., parking spaces determined in the center of a roadway). The parking space detection server 200 may use other suitable methods to determine incorrect parking spaces.

[0074] As also shown at 408, in some implementations, process 400 may include parking space detection server 200 removing the detected erroneous parking space from the new set of detected parking spaces. In some implementations, parking space detection server 200 updates one or more databases that store the detected parking spaces to remove the detected erroneous parking space from the new set of detected parking spaces or to flag the detected erroneous parking space to be eliminated as a detected parking space.

[0075] As shown in FIG. 4A , at 412, in some implementations, process 400 may include parking space detection server 200 determining at least one obscured parking space. In some implementations, an obscured parking space may be completely obscured or partially obscured. In some implementations, a completely obscured parking space may mean that a substantial portion or all of the parking space's physical identifier (e.g., features / attributes) is not visible to inspection (e.g., a vehicle is covering the parking space lines or one or more parking space lines). In some implementations, portions of the parking space's physical identifier may be obscured. For example, a vehicle is within the parking space and substantially all or a portion of the parking space's lines are visible, but one or more attributes are obscured (e.g., a handicapped symbol is covered by the vehicle, or a tree or shadow obscures portions of the parking lot). In some implementations, parking space detection server 200 may analyze input image tiles for obscured parking spaces. In some implementations, the analysis may be performed based on the remaining parking spaces (e.g., already detected parking spaces). In some implementations, the analysis may be based on detected vehicles. In some implementations, the analysis is based on a combination of detected vehicles and already detected parking spaces. As mentioned above, the input image tile may be derived from satellite imagery of a city, town, etc. The input image tile may include cars parked in parking spaces. In some implementations, the cars may block or obscure features / attributes that define the parking spaces, preventing the parking space detection server 200 from directly detecting some parking spaces and / or detecting one or more attributes of the parking spaces in the input image tile. The input image tile may have objects obscured by other objects (e.g., tree shade, shadow, building, etc.). Analyzing the image tile for one or more parking spaces that may be obscured produces more accurate parking space detection, allowing the parking space detection server 200 to determine parking spaces that may otherwise have been overlooked.

[0076] In some implementations, the parking space detection server 200 is configured to statistically determine the presence of one or more obscured parking spaces. As shown in FIG. 6A , image tile 610, image tile 620, and composite image tile 630 show a vehicle obscuring some of the parking space lines. In some implementations, the parking space detection server 200 may determine a parking space based on the presence of a parked vehicle in the input image tile. For example, if the parking space detection server 200 has data indicating that certain coordinates are associated with a parking lot, the parking space detection server 200 may determine that a detected parked vehicle at a location that does not have a correspondence to a parking space is likely associated with an obscured parking space. In some implementations, the parking space detection server 200 may tag / mark an area around the vehicle as a parking space that was not previously tagged as a parking space. In some implementations, the parking space detection server 200 may determine a parking space based on the presence of scattered parking spaces detected in the input image tile. In some implementations, the presence of one or more detected parking spaces scattered within a particular area, combined with ground truth data indicating that the scattered detected parking spaces are within a larger parking lot, allows parking space detection server 200 to predict the locations of other parking spaces within the larger parking lot. In some implementations, parking space detection server 200 may use a combination of detected vehicles and detected parking spaces adjacent to a detected vehicle to determine the presence of an unclear parking space. For example, if parking space detection server 200 detects a vehicle and does not detect a parking space line in which the vehicle is located (or detects partial features of a parking space), but detects one or more parking spaces adjacent to or substantially near the detected vehicle, parking space detection server 200 may tag the area in which the detected vehicle is located as a parking space.In some implementations, the parking space detection server 200 updates one or more databases that store detected parking spaces to include the newly detected uncertain parking space. In some implementations, the newly detected uncertain parking space may be added to a new set of detected parking spaces.

[0077] As shown in FIG. 4A , at 416, in some implementations, process 400 may include parking space detection server 200 determining one or more parking space attributes of the detected parking spaces (including detected ambiguous parking spaces, but not including erroneous parking spaces and / or overlapping detected parking spaces). In some implementations, determining one or more parking space attributes may include object detection and parking space classification. As mentioned above, the object detection and parking space classification process may be performed by parking space detection module 220 within parking space detection server 200. In some implementations, parking space detection module 220 may include one or more ML classification models (e.g., decision trees, K-means neighbors, etc.) or deep learning algorithms based on convolutional neural networks to perform specialized image detection or vector analysis of images / objects, if applicable. In some implementations, object detection and parking space classification may also use rule-based algorithms. In some implementations, object detection includes detecting certain special features associated with the object, such as special signs located within or near the parking space that convey information and / or special functions of the parking space (e.g., handicapped access signs, snow emergency routes, no parking days / times, permitted parking days / times, driveway cleaning, etc.). In some implementations, parking space classification includes determining other physical characteristics / attributes of the parking space (e.g., geometry, shape, width, line color, surface type, line type, shape, line condition, tire stop, curb classification, paint color, vehicle presence, etc.). In some implementations, parking space detection server 200 may reanalyze an image (e.g., an input image tile) having the identified parking space to determine attributes associated with the identified parking space.

[0078] In some implementations, the parking space detection server 200 analyzes the detected parking spaces rather than reanalyzing the entire image or the entire input image tile. As one example, FIG. 8 shows example generated images from a detected parking space 810. For example, in some implementations, the parking space detection server 200 may perform image preprocessing on the detected parking space 810 to generate the example images (e.g., image 815, image 820, image 825, image 830, image 835, image 840, and image 845) shown in FIG. 8. These images (e.g., images 815-845) help isolate one or more features of the detected parking space 810. In some implementations, when images (e.g., images 815-845) are analyzed by parking space detection server 200, parking space detection server 200 may more efficiently detect parking space features associated with detected parking space 810, such as, but not limited to, geometry, shape, width, line color, surface type, line type, shape, line condition, tire stop, curb classification, paint color, and vehicle presence. In some implementations, detected parking space 810 may be derived from input image tile 710 or some other image tile. In some implementations, image 815 shows an example of parking space detection server 200 determining a predicted mask for detected parking space 810. In some implementations, image 820 shows an example of parking space detection server 200 determining an outer boundary or skeleton for detected parking space 810. In some implementations, the skeleton of detected parking space 810 includes four vertices to help define the boundary of the detected parking space. In some implementations, image 825 shows one example of a possible image pre-processing step that may be applied to the detected parking space 810 to aid the parking space detection server 200 in detecting one or more attributes of the detected parking space 810. In image 825, the parking space detection server 200 has inverted the image 825 to further emphasize the detected parking space lines so that the aspects of the lines are easier to detect.In some implementations, images 830, 835, 840, and 845 show examples of the parking space detection server 200 extracting one or more contours / boundaries and surface types of the detected parking space 810. It should be understood that the generated examples of FIG. 8 are not limiting, and the parking space detection server 200 may perform one or more image pre-processing and post-processing techniques to enable more accurate determination of parking space attributes. In some implementations, the parking space detection server 200 stores one or more of the determined parking space features / attributes in a database, e.g., the electronic storage device 215. It should be understood that the determined parking space features / attributes may be stored in any suitable database.

[0079] At 416, in some implementations, process 400 may include parking space detection server 200 determining one or more parking space features / attributes for at least one detected unclear parking space based on features / attributes determined from at least some of the detected plurality of parking spaces. For example, if many detected parking spaces in close proximity to the detected unclear parking space have white lines, parking space detection server 200 may assign a color type to the detected unclear parking space as having white lines. As another example, parking space detection server 200 may detect a parking space because the parking space lines are visible in the image tile, but other information about the detected parking space is obscured from the display. In one such example, parking space detection server 200 may assign one or more attributes to the detected parking space based on domain knowledge of local parking space construction standards. In this example, if parking space detection server 200 determines that a parking space has a blue line, but other information about the parking space is obscured by a vehicle or for some other reason, parking space detection server 200 may determine that the blue line in the area where the parking space is detected means that the parking space is a disabled parking space. Parking space detection server 200 may tag the parking space with the blue line as a disabled parking space. As an alternative, parking space detection server 200 may determine that an obscure detected parking space uses a blue line (where blue is typically used to indicate a disabled parking space) while others near the detected parking space use white lines; then parking space detection server 200 may determine that there is a high probability that the parking space is associated with the attribute of a disabled space. Other appropriate logic may be used; for example, a blue line combined with a determination that the blue line is near a building entrance may cause parking space detection server 200 to tag the parking space as a disabled parking space.In some implementations, the detected uncertain parking spaces and their attributes are stored in a database, such as electronic storage device 215. It should be appreciated that the detected uncertain parking spaces and their attributes may be stored in any suitable database.

[0080] 4A (and as described above), at 418, in some implementations, process 400 may include storing the remaining plurality of parking spaces, the determined at least one uncertain parking space, and their respective associated parking space attributes in a database, such as electronic storage device 215. It should be appreciated that the remaining plurality of parking spaces, the determined at least one uncertain parking space, and their respective associated parking space attributes may be stored in any suitable database at any suitable time (e.g., when the parking space is detected, when the parking space attributes are detected).

[0081] As also shown in FIG. 4A , at 420, in some implementations, process 400 may include using the detected parking spaces (e.g., detected parking spaces from the new set of detected parking spaces) to facilitate vehicle-related activities. For example, a vehicle may request information about one or more parking spaces in close proximity to the vehicle. In some implementations, parking space detection server 200 or another server may provide one or more detected parking spaces and attributes associated with the detected parking spaces to the requesting vehicle. The vehicle may provide parking space data to its advanced driverless assistance system to provide more accurate information about one or more parking spaces (e.g., the parking space's boundary, what color is used for the parking space line, whether the parking space has a curb, whether the parking space is restricted (e.g., handicapped, time-limited, etc.)) that can be used to assist the vehicle in parking. In some implementations, the detected parking spaces may be used to inform governments about how much parking is available in a particular area under city planning. In some implementations, the parking space detection server 200 can be used to provide information about detected parking spaces to inform entities of the condition of their assets (e.g., faded parking space lines, damaged parking space surfaces), which can be used to plan repairs and budget for future repairs. Using the automated, more efficient, and more accurate parking space detection discussed herein, cities and towns can frequently determine parking spaces quickly to address constant changes in infrastructure. I would also like you to understand that.

[0082] 7 , output 740 shows a parking lot having multiple parking spaces detected and tagged by parking space detection server 200. In some implementations, parking space detection server 200 may also have determined attributes associated with one or more of the detected parking spaces. As mentioned above, the parking spaces shown as tagged in output 740 may be spaces originally identified by parking space detection server 200, as well as parking spaces detected using further processing, excluding parking spaces that were incorrectly detected, parking spaces detected from synthesized tiles, and parking spaces that were detected despite not being apparent from the display.

[0083] 4A shows example blocks of process 400, in some implementations, process 400 may include additional, fewer, different, or differently arranged blocks than those shown in FIG. 4A. Additionally, or alternatively, several of the blocks of process 400 may be performed in parallel.

[0084] In some implementations, process 400 may include additional implementations, such as any single implementation or any combination of implementations described below and / or with respect to one or more other processes described elsewhere herein.

[0085] In a first implementation, an image tile may include a portion of a satellite image.

[0086] In a second implementation, alone or in combination with the first implementation, the process 400 may further include analyzing multiple image tiles for the parking space.

[0087] In a third implementation, alone or in combination with the first and second implementations, an image tile of the plurality of image tiles may include a portion of a satellite image.

[0088] In a fourth implementation, alone or in combination with one or more of the first to third implementations, the process 400 may include creating at least one composite image tile from at least two image tiles of the plurality of image tiles.

[0089] In a fifth implementation, alone or in combination with one or more of the first through fourth implementations, process 400 may include detecting at least one new or previously undetected parking space from at least one composite image tile.

[0090] In a sixth implementation form, alone or in combination with one or more of the first to fifth implementation forms, at least a first portion of the detected at least one parking space from the at least one composite image tile is located on a first image tile of the at least two image tiles, and at least a second portion of the detected at least one parking space from the at least one composite image tile is located on a second image tile of the at least two image tiles.

[0091] In a seventh implementation, alone or in combination with one or more of the first to sixth implementations, the process 400 further includes removing any detected erroneous parking spaces from the detected at least one parking space from the at least one composite image tile; determining one or more parking space attributes from the detected at least one parking space from the at least one composite image tile; analyzing the synthetic image tile for additional uncertain parking spaces based on the remaining plurality of parking spaces and the detected at least one parking space from the at least one composite image tile; determining at least one additional uncertain parking space based on the remaining plurality of parking spaces and the detected at least one parking space from the at least one composite image tile; determining one or more parking space attributes of the at least one additional uncertain parking space based on the attributes determined from at least some of the remaining plurality of parking spaces and the detected at least one parking space from the at least one composite image tile; and storing the remaining plurality of parking spaces, the determined at least one uncertain parking space, the detected at least one parking space from the at least one composite image tile, the determined at least one uncertain parking space, and their respective associated parking space attributes.

[0092] In an eighth implementation, alone or in combination with one or more of the first to seventh implementations, process 400 further includes comparing the parking space attributes determined between the original image tile and at least a first composite image tile to determine inconsistencies between the parking space attributes, and resolving at least one attribute inconsistency in the original image tile based on the parking space attributes determined in the first composite image tile.

[0093] In a ninth implementation, alone or in combination with one or more of the first through eighth implementations, the vehicle-related activity is a business transaction. In some implementations, the business transaction can include automating a transaction to pay for vehicle energy bills (e.g., automatically activating a fuel pump or charging station and automatically paying a fuel or electricity bill), automating a curbside delivery transaction, or automating a parking transaction.

[0094] In a tenth implementation, alone or in combination with one or more of the first through ninth implementations, the vehicle-related activity is analyzing the vehicle's location in a geofencing system.

[0095] In an eleventh implementation, alone or in combination with one or more of the first to tenth implementations, the vehicle-related activity is navigation.

[0096] In a twelfth implementation, alone or in combination with one or more of the first to eleventh implementations, the vehicle-related activity is parking.

[0097] In a thirteenth implementation, alone or in combination with one or more of the first to twelfth implementations, the process 400 may further include acquiring one or more satellite images, creating a plurality of image tiles from the one or more satellite images, and detecting a plurality of parking spaces from the plurality of image tiles.

[0098] In a fourteenth implementation, alone or in combination with one or more of the first to thirteenth implementations, the one or more parking space attributes may include the color and type of the parking space lines.

[0099] In a fifteenth implementation, alone or in combination with one or more of the first to fourteenth implementations, the process 400 may include detecting at least overlapping parking spaces and removing at least one of the detected overlapping parking spaces.

[0100] In a sixteenth implementation, alone or in combination with one or more of the first through fifteenth implementations, the process 400 may include image analysis optimization. In some implementations, for example, the parking space detection server 200 may be provided with GIS data identifying known parking lots and garages. In some implementations, the parking space detection server 200 may constrain the processing of image tiles with coordinate data that matches known parking lots and garages for parking spaces. In some implementations, this may create a more efficient parking space image processing system and reduce the amount of image tiles processed by the parking space detection server 200. In some implementations, the parking space detection server 200 may be configured to initially detect parking lots and parking garages using lower-resolution satellite imagery (e.g., zoomed-out satellite imagery, which allows more areas to be analyzed with less image data). In some implementations, once parking lots and parking garages are detected, the parking space detection server 200 may process image tiles with coordinates that match the coordinates of the detected parking lots and parking garages to detect parking spaces using fewer higher-resolution / zoomed-in images and image tiles. The aforementioned optimizations result in a more efficient computer system for detecting parking spaces because lower-resolution image files require less processing power and memory to process and can be used for analyzing larger areas. Processing fewer high-resolution image tiles, which may be limited to known coordinates with parking spaces, e.g., parking lots and parking garages, also results in a more efficient computer system for detecting parking spaces because processing fewer image tiles requires less processing power and memory to obtain detected parking spaces. In one example of processing parking spaces in a small city, e.g., Kobe, Japan, the process for detecting parking spaces took four hours to process all or substantially all image tiles created from satellite imagery for Kobe, Japan.Using the more efficient processing described above to reduce image size (lower resolution images covering larger geographic areas) and reduce the number of image tiles to process, the processing time for detecting parking spaces in the city of Kobe, Japan, is reduced to approximately one hour. Similarly, processing can be further reduced by determining image tile areas that contain large amounts of water, forests, stadiums, large buildings, etc., allowing the parking space detection server 200 to avoid processing such image tiles, also creating a faster and more efficient method for detecting parking spaces within a given area.

[0101] In a seventeenth implementation form, alone or in combination with one or more of the first to sixteenth implementation forms, in some aspects the techniques described herein relate to a system including a processor and a storage medium storing instructions that, when executed by the processor, cause the system to perform a method of any one of the first to sixteenth implementation forms.

[0102] In an eighteenth implementation, alone or in combination with one or more of the first through seventeenth implementations, in some aspects the techniques described herein relate to a machine-readable medium carrying machine-readable instructions that, when executed by a processor of the machine, cause the machine to perform a method of any one of the first through seventeenth implementations.

[0103] FIG. 4B is a flow diagram of an example process for image preprocessing and determining one or more features / attributes based on the image preprocessing, according to some implementations of the present disclosure. As described above with respect to 416 in FIG. 4A , the parking space detection server 200 may perform image preprocessing on the detected parking space to generate one or more additional images, such as the images shown in FIG. 8 . In some implementations, one or more of these images may be created by manipulating the detected parking space, such as, but not limited to, enhancing and / or modifying an aspect of the detected parking space. In some implementations, the generated manipulated image of the detected parking space may aid in detecting features / attributes of the detected parking space. In some implementations, one or more process blocks in FIG. 4B may be implemented by a device, such as the parking space detection server 200, some other suitable device, or a combination of devices. In some implementations, the parking space detection module 220 of the parking space detection server 200 may perform process 416. In some implementations, the process 416 may be performed by another module, such as the parking space detection module 210 or another suitable module.

[0104] As shown in FIG. 4B , at 442, in some implementations, process 416 may include creating one or more new images of at least one detected parking space using one or more different image manipulation / transformation processes. For example, as described above, FIG. 8 illustrates detected parking space 810. FIG. 8 also illustrates several generated images, such as image 815 and image 820, that highlight certain aspects of detected parking space 810. In some implementations, as shown at 444, parking space detection server 200 may analyze one or more new images (e.g., image 815, image 820, etc.) using one or more different ML processes. In some implementations, parking space detection server 200 may analyze the new images using a rule-based algorithm. It should be understood that one or more of the ML processes and / or rule-based algorithms may be configured to analyze a particular one of the new images. For example, an ML process may be configured to analyze a generated image, such as image 820, to determine the boundary of the detected parking space. In some implementations, the parking space detection server 200 may determine one or more parking space attributes for at least one of the detected parking spaces based on one or more different ML processes and / or rule-based algorithms, as shown at 446. In some implementations, the process 416 may be repeated for one or more detected parking spaces.

[0105] 4B shows example blocks of process 416, in some implementations, process 416 may include additional, fewer, different, or differently arranged blocks than those shown in FIG. Additionally, or alternatively, multiple of the blocks of process 416 may be performed in parallel.

[0106] The implementations described herein may be implemented in hardware, firmware, software, or any combination thereof. Implementations of the disclosure herein may also be implemented 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 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), hardware memory in handheld computers, smartphones, and other portable devices, magnetic disk storage media, optical storage media, USB drives and other flash memory devices, Internet cloud storage, and others. Furthermore, firmware, software, routines, and instructions may be described herein as performing certain actions. However, it should be understood that such description is merely for convenience and that, in reality, such actions occur due to a computing device, processor, controller, or other device executing the firmware, software, routines, instructions, etc.

[0107] It should be understood that while method / process operations (e.g., blocks) may be described in a particular order, other housekeeping operations may be performed between operations, or operations may be arranged such that they occur at different times or may be distributed within a system allowing for the occurrence of processing operations at various intervals relative to processing, so long as the processing of the overlay operations is performed in a desired manner.

[0108] The foregoing disclosure provides illustration and description, but is not intended to be exhaustive or to limit implementations to the precise form disclosed. Modifications may be made in light of the foregoing disclosure or acquired from practice of the implementations. Moreover, various disclosed implementations may be used interchangeably with one another unless otherwise noted. As will be apparent to those skilled in the art, numerous modifications and variations may be made without departing from the spirit and scope thereof. Functionally equivalent methods and apparatuses within the scope of the present disclosure, in addition to those recited herein, will be apparent to those skilled in the art from the foregoing. Such modifications and variations are intended to be within the scope of the appended claims. The present disclosure is to be limited only by the appended claims, along with the full scope of equivalents to which such claims are entitled. It is also to be understood that the terminology used herein is for the purpose of describing particular implementations only, and is not intended to be limiting.

[0109] As used herein, the term "component" is intended to be broadly interpreted as referring to hardware, firmware, or a combination of hardware and software. It will be apparent that the systems and / or methods described herein may be implemented in different forms of hardware, firmware, and / or combinations of hardware and software. The actual specialized control hardware or software code used to implement these systems and / or methods is not a limitation on the implementation. Accordingly, the operations and behavior of the systems and / or methods are described herein without reference to specific software code—it is understood that software and hardware can be used to implement the systems and / or methods based on the descriptions herein. As used herein, satisfying a threshold may refer to a value being greater than the threshold, greater than or equal to the threshold, less than the threshold, less than or equal to the threshold, equal to the threshold, and / or the like, depending on the context. While particular combinations of features are recited in the claims and / or disclosed herein, these combinations are not intended to limit the disclosure of various implementations. Indeed, many of these features may be combined in ways not specifically recited in the claims and / or disclosed herein.

[0110] With respect to the use of substantially any plural and / or singular terms herein, those skilled in the art may translate the plural into the singular and / or the singular into the plural as appropriate depending on the context and / or application. The various singular / plural permutations may be expressly set forth herein for clarity.

[0111] Although each dependent claim listed below may depend directly on only one claim, the disclosure of various implementations includes each dependent claim in combination with any other claim in the claim set. No element, act, or instruction used herein should be construed as critical or essential unless expressly described as such. Also, herein, the articles "a" and "an" are intended to include one or more items and may be used interchangeably with "one or more." Furthermore, herein, the article "the" is intended to include one or more items referenced in connection with the article "the" and may be used interchangeably with "one or more." Furthermore, herein, the term "set" is intended to include one or more items (e.g., related items, unrelated items, combinations of related and unrelated items, and / or the like) and may be used interchangeably with "one or more." When only one item is intended, the phrase "only one" or similar language is used. Also, as used herein, the terms "comprises," "had," and the like are intended to be open-ended terms. Furthermore, the phrase "based on" is intended to mean "based at least in part on," unless expressly stated otherwise. Also, as used herein, the term "or," when used in a sequence, is intended to be inclusive and can be used interchangeably with "and / or" unless expressly stated otherwise (e.g., when used in combination with "either" or "only one of").

[0112] Several implementations of the present invention have been described. Various modifications may be made without departing from the spirit and scope of the present invention. For example, various forms of flow charts described above may be used with steps rearranged, added, or removed. Accordingly, other implementations are within the scope of the following claims.

Claims

1. 1. A method of operating a parking space detection system, comprising: analyzing the image tiles for parking spaces; detecting a plurality of parking spaces from the image tiles; analyzing the plurality of parking spaces for erroneous parking spaces; removing at least one detected erroneous parking space from the plurality of parking spaces to form a set of a remaining plurality of parking spaces; analyzing the image tiles for uncertain parking spaces based on the remaining plurality of parking spaces; determining at least one uncertain parking space based on the remaining plurality of parking spaces; determining one or more parking space attributes of the remaining plurality of parking spaces and of the at least one uncertain parking space based on attributes determined from at least some of the remaining plurality of parking spaces; storing the remaining plurality of parking spaces, the determined at least one uncertain parking space, and their respective associated parking space attributes; enabling at least one detected parking space of the plurality of parking spaces to be used to facilitate a vehicle-related activity; A method comprising:

2. The method of operating a parking space detection system of claim 1 , wherein the image tile comprises a portion of a satellite image.

3. The method of operating a parking space detection system of claim 1 further comprising analyzing a plurality of image tiles for parking spaces.

4. The method of operating a parking space detection system of claim 3 , wherein an image tile of the plurality of image tiles comprises a portion of a satellite image.

5. The method of operating a parking space detection system of claim 3 , further comprising creating at least one composite image tile from at least two image tiles of the plurality of image tiles.

6. The method of operating a parking space detection system of claim 5 further comprising detecting at least one parking space from the at least one composite image tile.

7. 7. The method of operating a parking space detection system of claim 6, wherein at least a first portion of the detected at least one parking space from the at least one composite image tile is located on a first image tile of the at least two image tiles, and at least a second portion of the detected at least one parking space from the at least one composite image tile is located on a second image tile of the at least two image tiles.

8. removing any detected erroneous parking spaces from the detected at least one parking space from the at least one composite image tile; determining one or more parking space attributes from the detected at least one parking space from the at least one composite image tile; analyzing the synthetic image tile for additional obscure parking spaces based on the remaining plurality of parking spaces and the detected at least one parking space from the at least one synthetic image tile; determining at least one additional unclear parking space based on the remaining plurality of parking spaces and the detected at least one parking space from the at least one composite image tile; determining one or more parking space attributes of the at least one additional obscure parking space based on attributes determined from at least some of the remaining plurality of parking spaces and the detected at least one parking space from the at least one composite image tile; storing the remaining plurality of parking spaces, the determined at least one uncertain parking space, the detected at least one parking space from the at least one synthetic image tile, the determined at least one uncertain parking space, and their respective associated parking space attributes; 7. The method of operating a parking space detection system of claim 6, further comprising:

9. The method of operating a parking space detection system of claim 1 , wherein the activity associated with the vehicle is a commercial transaction.

10. 2. The method of operating a parking space detection system of claim 1, wherein the activity related to the vehicle is analyzing the location of the vehicle in a geofencing system.

11. The method of operating a parking space detection system of claim 1 , wherein the activity associated with the vehicle is navigation.

12. The method of operating a parking space detection system of claim 1 , wherein the activity associated with the vehicle is parking.

13. acquiring one or more satellite images; creating a plurality of image tiles from the one or more satellite images; detecting a plurality of parking spaces from the plurality of image tiles; 10. The method of operating a parking space detection system of claim 1, further comprising:

14. The method of operating a parking space detection system of claim 1 , wherein the one or more parking space attributes include parking space line color and type.

15. 1. A device for operating parking space detection, comprising: Analyzing image tiles for parking spaces, detecting a plurality of parking spaces from the image tiles; analyzing the plurality of parking spaces for erroneous parking spaces; removing at least one detected erroneous parking space from the plurality of parking spaces to form a set of a remaining plurality of parking spaces; analyzing the image tiles for uncertain parking spaces based on the remaining plurality of parking spaces; determining at least one uncertain parking space based on the remaining plurality of parking spaces; determining one or more parking space attributes of the remaining plurality of parking spaces and one or more parking space attributes of the at least one uncertain parking space based on the determined attributes from at least some of the remaining plurality of parking spaces; storing the remaining plurality of parking spaces, the determined at least one uncertain parking space, and their respective associated parking space attributes; One or more processors configured to A device comprising:

16. The device of claim 15 , wherein the image tile comprises a portion of a satellite image.

17. the one or more processors: Analyze multiple image tiles for parking spaces 16. The device of claim 15, further configured to:

18. The device of claim 17 , wherein an image tile of the plurality of image tiles comprises a portion of a satellite image.

19. the one or more processors: Creating at least one composite image tile from at least two image tiles of the plurality of image tiles.

20. The device of claim 17, further configured to:

20. the one or more processors: Detecting at least one parking space from the at least one composite image tile.

20. The device of claim 19, further configured to:

21. 21. The device of claim 20, wherein at least a first portion of the detected at least one parking space from the at least one composite image tile is located on a first image tile of the at least two image tiles, and at least a second portion of the detected at least one parking space from the at least one composite image tile is located on a second image tile of the at least two image tiles.

22. the one or more processors: removing any detected erroneous parking spaces from the at least one detected parking space from the at least one composite image tile; determining one or more parking space attributes from the detected at least one parking space from the at least one composite image tile; analyzing the synthetic image tile for additional obscure parking spaces based on the remaining plurality of parking spaces and the detected at least one parking space from the at least one synthetic image tile; determining at least one additional unclear parking space based on the remaining plurality of parking spaces and the detected at least one parking space from the at least one composite image tile; determining one or more parking space attributes of the at least one additional obscure parking space based on attributes determined from at least some of the remaining plurality of parking spaces and the detected at least one parking space from the at least one composite image tile; and storing the remaining plurality of parking spaces, the determined at least one uncertain parking space, the detected at least one parking space from the at least one synthetic image tile, the determined at least one uncertain parking space, and their respective associated parking space attributes; 21. The device of claim 20 further configured to:

23. 16. The device of claim 15, wherein the one or more processors are further configured to enable at least one detected parking space of the plurality of parking spaces to be used to facilitate an activity related to a vehicle, the activity related to the vehicle being a business transaction.

24. 16. The device of claim 15, wherein the one or more processors are further configured to enable at least one detected parking space of the plurality of parking spaces to be used to facilitate a vehicle-related activity, the vehicle-related activity being analyzing a location of the vehicle in a geofencing system.

25. 16. The device of claim 15, wherein the one or more processors are further configured to enable at least one detected parking space of the plurality of parking spaces to be used to facilitate an activity related to a vehicle, the activity related to the vehicle being navigation.

26. 16. The device of claim 15, wherein the one or more processors are further configured to enable at least one detected parking space of the plurality of parking spaces to be used to facilitate an activity related to a vehicle, the activity related to the vehicle being parking.

27. the one or more processors: acquiring one or more satellite images; creating a plurality of image tiles from the one or more satellite images; and Detecting multiple parking spaces from the multiple image tiles 16. The device of claim 15, further configured to:

28. The device of claim 15 , wherein the one or more parking space attributes include a color and type of parking space line.