Patent Description:
Positive train control (PTC) is a communications-based train control system used to prevent accidents involving trains. PTC improves the safety of railway traffic by monitoring the locations of PTC critical assets within a railroad environment. However, the locations of the PTC critical assets may be misrepresented due to field error and/or changes within the railroad environment, which may negatively affect the performance of the PTC system. Patent documents <CIT> and <CIT> and <CIT> refer to methods for locating objects from images acquired by a camera.

According to embodiments, a method as defined in claim <NUM>, a system as defined in claim <NUM> and one or more computer-readable storage media as defined in claim <NUM> are provided.

Technical advantages of certain embodiments of this disclosure may include one or more of the following. Certain systems and methods described herein locate objects (e.g., PTC critical assets) within a railroad environment without manual measurements on or near the railroad, which improves the safety and efficiency of locating objects. Certain systems and methods described herein leverage information collected from geometry cars, such as images and GPS locations, which improves the accuracy of locating objects.

Other technical advantages will be readily apparent to one skilled in the art from the following figures, descriptions, and claims. Moreover, while specific advantages have been enumerated above, various embodiments may include all, some, or none of the enumerated advantages.

To assist in understanding the present disclosure, reference is now made to the following description taken in conjunction with the accompanying drawings, in which:.

A vehicle such as track geometry car may collect data as the vehicle travels through an environment. The vehicle may be equipped with a camera that captures images of physical objects within the environment and a GPS unit that captures GPS locations. To accurately locate the physical objects within the environment, the GPS locations need to be calibrated to account for the offset distance between the camera location and the location of the GPS unit. Certain embodiments of this disclosure include systems and methods for accurately locating objects within an environment using data collected from the camera and the GPS unit to determine the offset distance. The objects may be PTC critical objects associated with a railroad environment that are monitored for PTC compliance.

<FIG> show example systems and methods for locating objects. <FIG> and <FIG> show example systems for locating objects. <FIG> shows an example image that may be used by the systems of <FIG> and <FIG> and <FIG> shows an example output that may be generated by the systems of <FIG> and <FIG>. <FIG> shows an example method for locating objects. <FIG> illustrates an example computer system that may be used by the systems and methods described herein.

<FIG> illustrates an example system <NUM> for locating objects. System <NUM> of <FIG> includes a network <NUM>, a locator module <NUM>, a vehicle <NUM>, a camera <NUM>, a GPS unit <NUM>, and a physical object <NUM>. System <NUM> or portions thereof may be associated with an entity, which may include any entity, such as a business, company (e.g., a railway company, a transportation company, etc.), or a government agency (e.g., a department of transportation, a department of public safety, etc.) that may locate objects. The elements of system <NUM> may be implemented using any suitable combination of hardware, firmware, and software.

Network <NUM> of system <NUM> may be any type of network that facilitates communication between components of system <NUM>. Network <NUM> may connect locator module <NUM> to camera <NUM> and/or GPS unit <NUM> of system <NUM>. Although this disclosure shows network <NUM> as being a particular kind of network, this disclosure contemplates any suitable network. One or more portions of network <NUM> may include an ad-hoc network, an intranet, an extranet, a virtual private network (VPN), a local area network (LAN), a wireless LAN (WLAN), a wide area network (WAN), a wireless WAN (WWAN), a metropolitan area network (MAN), a portion of the Internet, a portion of the Public Switched Telephone Network (PSTN), a cellular telephone network, a <NUM> network, a <NUM> network, a <NUM> network, a Long Term Evolution (LTE) cellular network, a combination of two or more of these, or other suitable types of networks. One or more portions of network <NUM> may include one or more access (e.g., mobile access), core, and/or edge networks. Network <NUM> may be any communications network, such as a private network, a public network, a connection through Internet, a mobile network, a WI-FI network, a Bluetooth network, etc. Network <NUM> may include cloud computing capabilities. One or more components of system <NUM> may communicate over network <NUM>. For example, locator module <NUM> may communicate over network <NUM>, including receiving information from camera <NUM> and/or GPS unit <NUM>.

Locator module <NUM> of system <NUM> represents any suitable computing component that may be used to locate objects. Locator module <NUM> may be communicatively coupled to camera <NUM> and/or GPS unit <NUM> via network <NUM>. Locator module <NUM> controls the operations of system <NUM>. Locator module <NUM> is described in more detail in <FIG> below.

Vehicle <NUM> of system <NUM> represents a vehicle (e.g., a van, a truck, a car, a rail car, etc.) that collects data. In the illustrated embodiment of <FIG>, vehicle <NUM> is an automated track inspection vehicle (e.g., a track geometry car) that travels along railroad track <NUM>. Vehicle <NUM> may collect data associated with a railroad environment. For example, one or more components of vehicle <NUM> may collect images and/or sensor data associated with the railroad environment as vehicle <NUM> travels along railroad track <NUM>. The collected data may be used to locate objects within a railroad environment.

Camera <NUM> of system <NUM> is any device that records visual images. Camera <NUM> may be a video camera such as a digital camera, a digital single-lens reflex (DSLR) camera, a mirrorless video camera, a sports and action video camera, and the like. Camera <NUM> is physically attached to vehicle <NUM>. In the illustrated embodiment of <FIG>, camera <NUM> is mounted to a top, front end portion of vehicle <NUM>. Camera <NUM> is oriented such that the camera view angle <NUM> of camera <NUM> captures physical object <NUM> and track <NUM>. Camera <NUM> captures images (see, e.g., image <NUM> of <FIG>) of physical object <NUM> and track <NUM> as vehicle <NUM> travels along track <NUM>. The images captured by camera <NUM> depend on camera view angle <NUM>. Camera view angle <NUM> is influenced by the position of camera <NUM> relative to vehicle <NUM> and/or track <NUM>. Camera <NUM> may communicate the generated images to locator module <NUM> via network <NUM>.

GPS unit <NUM> of system <NUM> is any device that receives information from one or more GPS satellites and calculates the geographical position of GPS unit <NUM> using the received information. GPS unit <NUM> may be a GPS tracking unit (e.g., a data logger, a data pusher, a data puller, and the like) carried by vehicle <NUM> that uses GPS to track the movements of GPS unit <NUM> and determine the location of GPS unit <NUM> at a specific point in time. GPS unit <NUM> may include one or more GPS sensors, receivers, and/or antennas. GPS unit <NUM> is physically attached to vehicle <NUM>. In the illustrated embodiment of <FIG>, GPS unit <NUM> is mounted to a center top portion of vehicle <NUM>. GPS unit <NUM> may communicate one or more GPS locations of GPS unit <NUM> to locator module <NUM> via network <NUM>. Each GPS location may be represented by coordinates (e.g., a latitude coordinate and a longitude coordinate) or any other suitable representation.

Physical object <NUM> of system <NUM> represents any physical object associated with a railroad environment. The railroad environment is an area encompassing one or more railroad tracks <NUM>. Physical object <NUM> may be a train-controlled signal, a switch point, a crossing, a mile post sign, a speed sign, a clearance point, and the like. In certain embodiments, physical object <NUM> represents a PTC critical asset. PTC is a system of functional requirements for monitoring and controlling train movements.

Locator module <NUM> determines a geographical location of physical object <NUM> using one or more images captured by camera <NUM> and a GPS location captured by GPS unit <NUM>. Locator module <NUM> may determine the geographical location of physical object <NUM> relative to a centerline of railroad track <NUM>. The centerline of railroad track <NUM> is a line that is centered between the two outer rails of railroad track <NUM>. Locator module <NUM> may use the railroad track centerline as a reference line for locating physical objects <NUM>. In certain embodiments, locator module <NUM> detects an object (e.g., a representation of physical object <NUM>) in an image received from camera <NUM> and determines an object point of interest (POI) in the detected object of the image. The object POI represents a specific point within the detected object of the image. Locator module <NUM> maps the object POI to a centerline of a railroad track (e.g., a representation of railroad track <NUM>) in the image to generate a POI. The POI represents a location of physical object <NUM> transposed to the centerline of railroad track <NUM>.

Locator module <NUM> determines first distance <NUM> from the POI (which corresponds to the location of physical object <NUM> along the centerline of track <NUM>) to camera <NUM>. Locator module <NUM> determines first distance <NUM> by calculating a number of pixels from the POI of the image to an edge of the image. The edge of the image represents a location of camera <NUM> (e.g., a location of a lens of camera <NUM>). Locator module <NUM> then converts the number of pixels to an equivalent distance using camera view angle <NUM>.

Locator module <NUM> determines a second distance <NUM> from camera <NUM> to GPS unit <NUM>. Second distance <NUM> depends on the relative locations of camera <NUM> and GPS unit <NUM>. In the illustrated embodiment of <FIG>, second distance <NUM> is a predetermined distance measured from camera <NUM> attached to a top, front end of vehicle <NUM> to GPS unit <NUM> attached to a top, center portion of vehicle <NUM>. In certain embodiments, second distance <NUM> is measured from a lens of camera <NUM> to an antenna of GPS unit <NUM>. Second distance <NUM> may be approximately equal to half a length of vehicle <NUM> (e.g., a geometry car). For example, second distance <NUM> may be between <NUM> and <NUM> inches (e.g., <NUM> inches.

Locator module <NUM> adds first distance <NUM> to second distance <NUM> to determine offset distance <NUM>. Offset distance <NUM> represents the distance from a location of physical object <NUM> transposed to the centerline of railroad track <NUM> to GPS unit <NUM>. Since the image of physical object <NUM> and the GPS location of GPS unit <NUM> are captured by camera <NUM> and GPS unit <NUM>, respectively, at the same or approximately the same point in time, the GPS location does not accurately reflect the location of physical object <NUM>. Offset distance <NUM> accounts for the difference between the location of physical object <NUM> and the GPS location of GPS unit <NUM> at a specific point in time.

In operation, locator module <NUM> receives a GPS location generated by GPS unit <NUM> mounted to vehicle <NUM> and an image generated by camera <NUM> mounted to vehicle <NUM>. The GPS location and the image are captured at the same point in time. Locator module <NUM> detects an object (e.g., a representation of physical object <NUM>) in the image and determines an object POI in the detected object of the image. Locator module <NUM> maps the object POI to a centerline of a railroad track (e.g., a representation of railroad track <NUM>) in the image to generate a POI. The POI represents the location of physical object <NUM> as transposed to the centerline of track <NUM>. Locator module <NUM> determines a number of pixels from the POI of the image to an edge of the image. Locator module <NUM> determines first distance <NUM> from the POI to camera <NUM> using the number of pixels and camera view angle <NUM> and determines second distance <NUM> from camera <NUM> to GPS unit <NUM>. Locator module <NUM> adds first distance <NUM> to second distance <NUM> to determine offset distance <NUM>. Locator module <NUM> modifies the GPS location based on the offset distance to determine a geographical POI location associated with physical object <NUM>. As such, system <NUM> of <FIG> locates objects without manual measurements on or near the railroad, which improves the safety and efficiency of locating objects.

Although <FIG> illustrates a particular number of networks <NUM>, locator modules <NUM>, vehicles <NUM>, cameras <NUM>, GPS units <NUM>, and physical objects <NUM>, this disclosure contemplates any suitable number of networks <NUM>, locator modules <NUM>, vehicles <NUM>, cameras <NUM>, GPS units <NUM>, and physical objects <NUM>. For example, system <NUM> of <FIG> may include more than one camera <NUM> and/or GPS unit <NUM>. Although <FIG> illustrates a particular arrangement of network <NUM>, locator module <NUM>, vehicle <NUM>, camera <NUM>, GPS unit <NUM>, and physical object <NUM>, this disclosure contemplates any suitable arrangement of network <NUM>, locator module <NUM>, vehicle <NUM>, camera <NUM>, GPS unit <NUM>, and physical objectsl60. For example, GPS unit <NUM> may be mounted to a rear portion of vehicle <NUM>. As another example, camera <NUM> and/or GPS unit <NUM> may be an integral part of vehicle <NUM>. One or more components of system <NUM> may be implemented using one or more components of the computer system of <FIG>. System <NUM> of <FIG> may utilize one or more programs to perform one or more operations. For example, locator module <NUM> may use a geographic information system (GIS), visualization software, an internet service program, and the like.

Although <FIG> describes system <NUM> for locating objects within a railroad environment, one or more components of system <NUM> may be applied to other implementations. For example, one or more components of system <NUM> may be utilized for locating objects along a highway, a canal, a trail, a pipeline, and the like.

<FIG> illustrates an example system <NUM> for locating objects that may be used by system <NUM> of <FIG>. System <NUM> or portions thereof may be associated with an entity, which may include any entity, such as a business, company (e.g., a railway company, a transportation company, etc.), or a government agency (e.g., a department of transportation, a department of public safety, etc.) that may locate objects. The elements of system <NUM> may be implemented using any suitable combination of hardware, firmware, and software. System <NUM> of <FIG> includes network <NUM>, locator module <NUM>, camera <NUM>, and GPS unit <NUM>. Locator module <NUM> of system <NUM> includes an interface <NUM>, a memory <NUM>, and a processor <NUM>.

Interface <NUM> of locator module <NUM> represents any suitable computer element that can receive information from network <NUM>, transmit information through network <NUM>, perform suitable processing of the information, communicate to other components (e.g.,
camera <NUM> and GPS unit <NUM>) of system <NUM> of <FIG>, or any combination of the preceding. Interface <NUM> represents any port or connection, real or virtual, including any suitable combination of hardware, firmware, and software, including protocol conversion and data processing capabilities, to communicate through a LAN, a WAN, or other communication system that allows system <NUM> of <FIG> to exchange information between components of system <NUM>.

Memory <NUM> of locator module <NUM> stores, permanently and/or temporarily, received and transmitted information, as well as system software, control software, other software for locator module <NUM>, and a variety of other information. Memory <NUM> may store information for execution by processor <NUM>. Memory <NUM> includes any one or a combination of volatile or non-volatile local or remote devices suitable for storing information. Memory <NUM> may include Random Access Memory (RAM), Read-only Memory (ROM), magnetic storage devices, optical storage devices, or any other suitable information storage device or a combination of these devices. Memory <NUM> may include any suitable information for use in the operation of locator module <NUM>. Additionally, memory <NUM> may be a component external to (or may be partially external to) locator module <NUM>. Memory <NUM> may be located at any location suitable for memory <NUM> to communicate with locator module <NUM>. In the illustrated embodiment of <FIG>, memory <NUM> of locator module <NUM> stores a data collection engine <NUM>, a pixel engine <NUM>, a locator engine <NUM>, a comparison engine <NUM>, and a database <NUM>. In certain embodiments, data collection engine <NUM>, pixel engine <NUM>, locator engine <NUM>, comparison engine <NUM>, and/or database <NUM> may be external to memory <NUM> and/or locator module <NUM>.

Data collection engine <NUM> of locator module <NUM> is an application that collects data from one or more components of system <NUM>. Data collection engine <NUM> may collect data from GPS unit <NUM>, camera <NUM>, an administrator, and the like. Data collection engine <NUM> may receive one or more images <NUM> from camera <NUM> of system <NUM> via network <NUM>. Images <NUM> represent the views of the environment captured by camera <NUM>. Each image <NUM> may include a representation of a physical object and a railroad track (e.g., physical object <NUM> and railroad track <NUM> of <FIG>). Data collection engine <NUM> may receive one or more GPS locations <NUM> from GPS unit <NUM>. Each GPS location <NUM> may be represented by coordinates (e.g., a latitude coordinate and a longitude coordinate) or any other suitable representation. Data collection engine <NUM> may collect data associated with a travel direction of vehicle <NUM> of <FIG>. For example, data collection engine <NUM> may receive a travel direction (e.g., north or south) of vehicle <NUM> from an administrator, a motion sensor associated with vehicle <NUM>, and the like.

In certain embodiments, data collection engine <NUM> detects an object (e.g., object <NUM> of <FIG>) in image <NUM> representative of physical object <NUM> of <FIG>. Data collection engine <NUM> determines an object POI <NUM> in the detected object of image <NUM>. Object POI <NUM> represents a specific reference point within the detected object of image <NUM>. Data collection engine <NUM> maps object POI <NUM> to a centerline of a railroad track (e.g., a representation of railroad track <NUM> of <FIG>) in image <NUM> to generate POI <NUM>. POI <NUM> represents a location of physical object <NUM> transposed to the centerline of the railroad track. The process of generating POI <NUM> of image <NUM> is described in more detail in <FIG> below for image <NUM>. In certain embodiments, rather than determining POI <NUM>, data collection engine <NUM> may receive image <NUM> from data collection engine <NUM> with POI <NUM> included.

Pixel engine <NUM> of locator module <NUM> is an application that analyzes pixels of image <NUM>. Pixel engine <NUM> may receive image <NUM> with POI <NUM> from data collection engine <NUM> and determines a number of pixels from POI <NUM> of image <NUM> to an edge of image <NUM>. The edge of image <NUM> represents a location of camera <NUM>. Pixel engine <NUM> may convert each pixel from POI <NUM> to the edge of image <NUM> to an equivalent distance. Each pixel may be associated with a different distance due to the camera view angle. The process of converting the pixels to a distance is described in more detail in <FIG> below for image <NUM>.

Locator engine <NUM> of locator module <NUM> is an application that determines POI location <NUM> associated with physical object <NUM>. Locator engine <NUM> may determine first distance <NUM> from POI <NUM> to camera <NUM> using the number of pixels and an angle of camera <NUM> (e.g., camera view angle <NUM> of <FIG>). Locator engine <NUM> determines second distance <NUM> from camera <NUM> to GPS unit <NUM>. Second distance <NUM> may be a predetermined distance based on the relative locations of camera <NUM> and GPS unit <NUM>. Locator engine <NUM> adds first distance <NUM> to second distance <NUM> to determine offset distance <NUM>.

In certain embodiments, locator engine <NUM> receives GPS location <NUM> from data collection engine <NUM> and determines POI location <NUM> associated with physical object <NUM> of <FIG> using GPS location <NUM>, offset distance <NUM>, and the travel direction of vehicle <NUM> of <FIG>. For example, locator engine <NUM> may receive GPS location <NUM> from data collection engine <NUM> represented by latitude and longitude coordinates (e.g., N38 <NUM>, W97 <NUM>) or any other suitable representation. Locator engine <NUM> may receive an indication from data collection engine <NUM> that vehicle <NUM> of <FIG> is traveling in a descending direction. Locator engine <NUM> may adjust GPS location <NUM> to account for offset distance <NUM> (e.g., <NUM> feet) and the travel direction, which yields POI location <NUM> (e.g., Lat = <NUM>, long = -<NUM>). POI location <NUM> represents the geographical location of physical object <NUM> of <FIG> transposed to the centerline of railroad track <NUM> of <FIG>. In certain embodiments, physical object <NUM> is a PTC critical asset.

In certain embodiments, a program external to system <NUM> (e.g., a web service and/or cloud service program) may perform one or more determinations for locator engine <NUM>. For example, a user (e.g., an administrator of system <NUM>) may input GPS location <NUM>, offset distance <NUM>, and the travel direction into an external program, and the web service program may generate POI location <NUM>.

Comparison engine <NUM> of locator module <NUM> is an application that compares two determined locations associated with physical object <NUM> of <FIG>. Comparison engine <NUM> may compare POI location <NUM> to a field location <NUM> associated with physical object <NUM>. Field location <NUM> is a location that is determined by field measurement. Comparison engine <NUM> may determine whether POI location <NUM> and field location <NUM> are within a predetermined distance of each other. The predetermined distance may be a distance that is less than or equal to twenty feet (e.g., one foot, three feet, or ten feet). The predetermined distance may be determined based on one or more requirements (e.g., an auditing requirement). In the event that comparison engine <NUM> determines that POI location <NUM> and field location <NUM> are within a predetermined distance of each other, comparison engine <NUM> may generate an indication that the location of physical object <NUM> complies with one or more requirements (e.g., a PTC compliance requirement). In the event that comparison engine <NUM> determines that POI location <NUM> and field location <NUM> are separated by more than the predetermined distance, comparison engine <NUM> may generate an indication that the location of physical object <NUM> does not comply with one or more requirements. For example, comparison engine <NUM> may apply a defect to physical object <NUM>.

In certain embodiments, comparison engine <NUM> may generate a report that indicates which physical objects <NUM> are defective and/or which physical objects <NUM> are in compliance. In certain embodiments, comparison engine <NUM> may generate instructions in response to determining that one or more physical objects <NUM> are defective or in compliance. The instructions may include actions to be taken such as performing one or more field measurements for all defective physical objects <NUM>.

Database <NUM> of locator module <NUM> may store certain types of information for locator module <NUM>. For example, database <NUM> may store one or more images <NUM>, object POIs <NUM>, POIs <NUM>, GPS locations <NUM>, POI locations <NUM>, first distances <NUM>, second distances <NUM>, offset distances <NUM>, and field locations <NUM>. Database <NUM> may be any one or a combination of volatile or non-volatile local or remote devices suitable for storing information. Database <NUM> may include RAM, ROM, magnetic storage devices, optical storage devices, or any other suitable information storage device or a combination of these devices. Database <NUM> may be a component external to locator module <NUM>. Database <NUM> may be located in any location suitable for database <NUM> to store information for locator module <NUM>. For example, database <NUM> may be located in a cloud environment.

Processor <NUM> of locator module <NUM> controls certain operations of locator module <NUM> by processing information received from interface <NUM> and memory <NUM> or otherwise accessed by processor <NUM>. Processor <NUM> communicatively couples to interface <NUM> and memory <NUM>. Processor <NUM> may include any hardware and/or software that operates to control and process information. Processor <NUM> may be a programmable logic device, a microcontroller, a microprocessor, any suitable processing device, or any suitable combination of the preceding. Additionally, processor <NUM> may be a component external to locator module <NUM>. Processor <NUM> may be located in any location suitable for processor <NUM> to communicate with locator module <NUM>. Processor <NUM> of locator module <NUM> controls the operations of data collection engine <NUM>, pixel engine <NUM>, locator engine <NUM>, and comparison engine <NUM>.

Camera <NUM> of system <NUM> captures images <NUM> of one or more physical objects. For example, camera <NUM> of system <NUM> may be attached to a front end of a geometry car traveling along a railroad track and may capture image <NUM> of a physical object within the railroad environment associated with the railroad track. GPS unit <NUM> of system <NUM> captures one or more GPS locations <NUM>. For example, GPS unit <NUM> may be attached to a center portion of the geometry car traveling along the railroad track and capture GPS location <NUM> of GPS unit <NUM> at the time camera <NUM> captures image <NUM>. Camera <NUM> and GPS unit <NUM> communicate images <NUM> and GPS locations <NUM> to locator module <NUM> via network <NUM>, and locator module <NUM> uses data collection engine <NUM>, pixel engine <NUM>, and/or locator engine <NUM> to determine POI locations <NUM> associated with the physical
objects. Locator module <NUM> may then use comparison engine <NUM> to compare POI locations to field locations <NUM>. As such, system <NUM> may be used to verify the locations of physical objects (e.g., PTC critical assets) within a railroad environment.

Although <FIG> illustrates a particular arrangement of network <NUM>, locator module <NUM>, interface <NUM>, memory <NUM>, processor <NUM>, data collection engine <NUM>, pixel engine <NUM>, locator engine <NUM>, comparison engine <NUM>, database <NUM>, camera <NUM>, and GPS unit <NUM>, this disclosure contemplates any suitable arrangement of network <NUM>, locator module <NUM>, interface <NUM>, memory <NUM>, processor <NUM>, data collection engine <NUM>, pixel engine <NUM>, locator engine <NUM>, comparison engine <NUM>, database <NUM>, camera <NUM>, and GPS unit <NUM>. Network <NUM>, locator module <NUM>, interface <NUM>, memory <NUM>, processor <NUM>, data collection engine <NUM>, pixel engine <NUM>, locator engine <NUM>, comparison engine <NUM>, database <NUM>, camera <NUM>, and GPS unit <NUM> may be physically or logically co-located with each other in whole or in part.

<FIG> shows an example image <NUM> that may be used by the systems of <FIG> and <FIG>. Image <NUM> may represent one or more images <NUM> of <FIG>. Image <NUM> may be generated by camera <NUM> of <FIG> and/or <FIG>. Image <NUM> includes object <NUM>. Object <NUM> is a representation of physical object <NUM> of <FIG> as captured by camera <NUM>. In the illustrated embodiment of <FIG>, object <NUM> is a graphical representation of a mile post sign. Image <NUM> includes railroad track <NUM>. Railroad track <NUM> is a representation of railroad track <NUM> of <FIG>. Railroad track <NUM> of image <NUM> includes two rails. Centerline <NUM> of railroad track <NUM> is a reference line that is centered between the two outer rails of railroad track <NUM>.

Image <NUM> of <FIG> includes object POI <NUM>. Object POI <NUM> may represent object POI <NUM> of system <NUM> of <FIG>. Object POI <NUM> is a specific reference point within object <NUM> of image <NUM>. In the illustrated embodiment of <FIG>, object POI <NUM> is located at the base of object <NUM>. Image <NUM> includes POI <NUM>. POI <NUM> may represent POI <NUM> of <FIG>. POI <NUM> represents a location of object POI <NUM> transposed a distance <NUM> to centerline <NUM> of railroad track <NUM>. Distance <NUM> may be measured perpendicularly from centerline <NUM> of railroad track <NUM> to object POI <NUM>. Distance <NUM> may be measured horizontally from POI <NUM> to object POI <NUM> in relation to an edge (e.g., image edge <NUM>) of image <NUM>.

Image <NUM> has a horizontal measurement and a vertical measurement expressed in pixels. Each pixel of image <NUM> is a unit of programmable color in image <NUM>. The pixel dimensions of image <NUM> are expressed as a number of pixels horizontally and a number of pixels vertically that define the resolution of image <NUM>. Each pixel may be converted to a linear distance. The pixel conversion may depend on the camera view angle (e.g., camera view angle <NUM> of <FIG>) such that each pixel corresponds to a different distance.

Image edge <NUM> of <FIG> represents an outer boundary of image <NUM>. Image edge <NUM> may correspond to a location of camera <NUM> of <FIG> such that distance <NUM> from POI <NUM> to image edge <NUM> represents the distance from POI <NUM> to camera <NUM> (e.g., a lens of camera <NUM>) of <FIG>. Distance <NUM> may be measured perpendicularly from image edge <NUM> to POI <NUM>. Distance <NUM> is measured from image edge <NUM> to POI <NUM> along centerline <NUM> of railroad track <NUM>. Distance <NUM> may be represented as a number of pixels n, where n represents any suitable integer (e.g., <NUM> pixels). The number of pixels may be converted to a linear measurement (e.g., <NUM> inches or <NUM> feet). The linear measurement may be represented by any suitable measurement (e.g., inches, feet, meters, centimeters, etc.) As such, image <NUM> of <FIG> may be used to determine distance <NUM> (e.g., first distance <NUM> of <FIG>) from POI <NUM> to camera <NUM> of <FIG> without field measurement, which may improve the efficiency and accuracy of locating objects within an environment.

Modifications, additions, or omissions may be made to image <NUM> depicted in <FIG>. For example, image <NUM> may include more or less than two railroad tracks. As another example, image <NUM> may include more than one object <NUM>. Although image <NUM> of <FIG> illustrates a particular arrangement of object <NUM> and track <NUM>, this disclosure contemplates any suitable arrangement of object <NUM> and track <NUM>. For example, object <NUM> may be located on the opposite side of track <NUM>.

<FIG> illustrates an example output <NUM> that may be generated by system <NUM> of <FIG> and/or system <NUM> of <FIG>. In the illustrated embodiment of <FIG>, output <NUM> is represented by a screenshot. Output <NUM> includes railroad track <NUM>, railroad track <NUM>, GPS input <NUM>, offset input <NUM>, location output <NUM>, and location output <NUM>. Railroad track <NUM> and railroad track <NUM> represent centerlines of adjacent railroad tracks in a railroad environment.

GPS input <NUM> of <FIG> represents an input of a GPS location (e.g., GPS location <NUM> of <FIG>). The GPS location may be generated by a GPS unit (e.g., GPS unit <NUM> of <FIG>) mounted to the top of a vehicle (e.g., vehicle <NUM> of <FIG>). The GPS location may be captured at a time when a camera (e.g., camera <NUM> of <FIG>) captures an image of a physical object (e.g., physical object <NUM> of <FIG>) in a railroad environment. GPS input <NUM> is represented as a latitude coordinate and a longitude coordinate. In certain embodiments, an administrator (e.g., a railway engineer) may enter GPS input <NUM> into a program (e.g., a web service program). As illustrated in output <NUM> of <FIG>, GPS input <NUM> is located relative to railroad track <NUM>. In certain embodiments, railroad track <NUM> is selected in lieu of railroad track <NUM> due to the GPS location of GPS input <NUM> being closer in distance to railroad track <NUM> than railroad track <NUM>.

Offset input <NUM> of <FIG> represents an input of an offset distance (e.g., offset distance <NUM> of <FIG>) as measured between the physical object captured by the camera mounted to the vehicle and the GPS unit mounted to the vehicle. Offset input <NUM> is used to modify GPS input <NUM> to account for the offset distance. As illustrated in output <NUM> of FIG. <NUM>, a circle is generated around the intersection of GPS input <NUM> and railroad track <NUM>. The radius of the circle is equal to the offset distance. Location output <NUM> represents the distance from GPS input <NUM> as offset by offset distance <NUM> in a first direction (e.g., east) along railroad track <NUM>. Location output <NUM> represents the distance from GPS input <NUM> as offset by offset distance <NUM> in a second direction along railroad track <NUM>. Location output <NUM> is selected as the POI location (e.g., POI location <NUM> of <FIG>) associated with the physical object if the train is traveling in the first direction (e.g., east). Location output <NUM> is selected as the POI location associated with the physical object if the train is traveling in the second direction (e.g., west).

Modifications, additions, or omissions may be made to output <NUM> depicted in <FIG>. For example, output <NUM> may include more or less than two railroad tracks. As another example, output <NUM> may include more or less than two location outputs. As still another example, output <NUM> may include values (e.g., numeric or alphanumeric values) representative of GPS input <NUM>, offset input <NUM>, location output <NUM>, and/or location output <NUM>.

<FIG> illustrates an example method <NUM> for locating objects. Method <NUM> begins at step <NUM>. At step <NUM>, a locator module (e.g., locator module <NUM> of <FIG>) receives a GPS location generated by a GPS unit (e.g., GPS unit <NUM> of <FIG>) associated with a vehicle (e.g., vehicle <NUM> of <FIG>). The GPS unit may be attached to a center portion of the roof of the vehicle. The vehicle may be a geometry car that travels along a railroad track of a railroad environment. The GPS location may be represented by latitude and longitude coordinates (e.g., N38 <NUM>, W97 <NUM>) or any other suitable representation. Method <NUM> then moves from step <NUM> to step <NUM>.

At step <NUM>, the locator module receives an image (e.g., image <NUM> of <FIG>) generated by a camera (e.g., camera <NUM> of <FIG>) associated with the vehicle. The camera may be attached to a front end of the roof of the vehicle. The image may be an image of the railroad environment as captured from the front end of the vehicle. Method <NUM> then moves from step <NUM> to step <NUM>. At step <NUM>, the locator module detects an object in the image. The object may represent a physical object (e.g., physical object <NUM> of <FIG>) within the railroad environment, such as a train-controlled signal, a switch point, a crossing, a mile post sign, a speed sign, a clearance point, etc. In certain embodiments, the object represents a PTC critical asset. Method <NUM> then moves from step <NUM> to step <NUM>.

At step <NUM>, the locator module determines an object POI in the detected object of the image. The object POI is a specific point within the object. For example, the object POI may be a specific point at the bottom of a mile post sign. Method <NUM> then moves from step <NUM> to step <NUM>, where the locator module maps the object POI to a centerline of a railroad track in the image to generate a POI. The POI represents a location of the physical object transposed to the centerline of the railroad track. Method <NUM> then moves from step <NUM> to step <NUM>.

At step <NUM>, the locator module determines a number of pixels from the POI of the image to an edge of the image. The edge of the image represents a location of the camera. The locator module may convert the number of pixels to a linear distance. Method <NUM> then moves from step <NUM> to step <NUM>, where the locator module determines a first distance (e.g., first distance <NUM> of <FIG>) from the POI to the camera using the number of pixels and an angle of the camera (e.g., camera view angle <NUM> of <FIG>). The first distance may be represented as a linear horizontal distance (e.g., <NUM> feet) as measured along the centerline of the railroad track. The linear horizontal distance may be represented by any suitable measurement (e.g., inches, feet, meters, centimeters, etc.) Method <NUM> then moves from step <NUM> to step <NUM>.

At step <NUM>, the locator module determines a second distance (e.g., second distance <NUM> of <FIG>) from the camera to the GPS unit. The second distance may be a predetermined distance between the location of the camera mounted on the vehicle and the location of the GPS unit mounted on the vehicle. The second distance may be represented as a linear horizontal distance (e.g., <NUM> feet) as measured along the centerline of the railroad track. The linear horizontal distance may be represented by any suitable measurement (e.g., inches, feet, meters, centimeters, etc.) Method <NUM> then moves from step <NUM> to step <NUM>,
where the locator module adds the first distance to the second distance to determine an offset distance (e.g., offset distance <NUM> of <FIG>) from the POI to the GPS unit. The offset distance may be represented as a linear horizontal distance (e.g., <NUM> feet) as measured along the centerline of the railroad track. The linear horizontal distance may be represented by any suitable measurement (e.g., inches, feet, meters, centimeters, etc.) Method <NUM> then moves from step <NUM> to step <NUM>.

At step <NUM>, the locator module determines a travel direction (e.g., east or west) of the vehicle along the railroad track at the time the GPS location and the image were captured. Method <NUM> then moves from step <NUM> to step <NUM>, where the locator module determines a POI location associated with the physical object using the GPS location, the offset distance, and the travel direction of the vehicle. For example, the locator module may modify the GPS location (e.g., N38 <NUM>, W97 <NUM>) by the offset distance (e.g., <NUM> feet) and the vehicle travel direction (e.g., east) to generate a geographical POI location (e.g., Lat = <NUM>, long = - <NUM>). The geographical POI location may be represented by any suitable representation. Method <NUM> then moves from step <NUM> to step <NUM>.

At step <NUM>, locator module compares the POI location to a field location (e.g., field location <NUM> of <FIG>). The field location represents a location of the physical object as measured in the field. Method <NUM> then moves from step <NUM> to step <NUM>, where the locator module determines whether the POI location and the field location are separated by more than a predetermined distance (e.g., three feet). If the locator module determines that the POI location and the field location are separated by more than the predetermined distance, method <NUM> moves from step <NUM> to step <NUM>, where the locator module applies a defect to the physical object. If the locator module determines that the POI location and the field location are not separated by more than the predetermined distance, method <NUM> moves from step <NUM> to step <NUM>, where the locator module verifies the location of physical object. Method <NUM> then moves from steps <NUM> and <NUM> to step <NUM>, where method <NUM> ends.

Modifications, additions, or omissions may be made to method <NUM> depicted in <FIG>. Method <NUM> may include more, fewer, or other steps. For example, method <NUM> may include generating a report in response to applying a defect to the physical object at step <NUM> and/or in response to verifying the location of the physical object at step <NUM>. Steps may be performed in parallel or in any suitable order. While discussed as specific components completing the steps of method <NUM>, any suitable component may perform any step of
method <NUM>. For example, a web service may determine the geographical location of the POI at step <NUM>.

<FIG> shows an example computer system that may be used by the systems and methods described herein. For example, network <NUM>, locator module <NUM>, camera <NUM>, and/or GPS unit <NUM> of <FIG> may include one or more interface(s) <NUM>, processing circuitry <NUM>, memory (ies) <NUM>, and/or other suitable element(s). Interface <NUM> (e.g., interface <NUM> of <FIG>) receives input, sends output, processes the input and/or output, and/or performs other suitable operation. Interface <NUM> may include hardware and/or software.

Processing circuitry <NUM> (e.g., processor <NUM> of <FIG>) performs or manages the operations of the component. Processing circuitry <NUM> may include hardware and/or software. Examples of a processing circuitry include one or more computers, one or more microprocessors, one or more applications, etc. In certain embodiments, processing circuitry <NUM> executes logic (e.g., instructions) to perform actions (e.g., operations), such as generating output from input. The logic executed by processing circuitry <NUM> may be encoded in one or more tangible, non-transitory computer readable media (such as memory <NUM>). For example, the logic may include a computer program, software, computer executable instructions, and/or instructions capable of being executed by a computer. In particular embodiments, the operations of the embodiments may be performed by one or more computer readable media storing, embodied with, and/or encoded with a computer program and/or having a stored and/or an encoded computer program.

Memory <NUM> (or memory unit) stores information. Memory <NUM> (e.g., memory <NUM> of <FIG>) may include one or more non-transitory, tangible, computer-readable, and/or computer-executable storage media. Examples of memory <NUM> include computer memory (for example, RAM or ROM), mass storage media (for example, a hard disk), removable storage media (for example, a Compact Disk (CD) or a Digital Video Disk (DVD)), database and/or network storage (for example, a server), and/or other computer-readable medium.

Herein, a computer-readable non-transitory storage medium or media may include one or more semiconductor-based or other integrated circuits (ICs) (such as field-programmable gate arrays (FPGAs) or application-specific ICs (ASICs)), hard disk drives (HDDs), hybrid hard drives (HHDs), optical discs, optical disc drives (ODDs), magneto optical discs, magneto-optical drives, floppy diskettes, floppy disk drives (FDDs), magnetic tapes, solid-state drives (SSDs), RAM-drives, SECURE DIGITAL cards or drives, any other
suitable computer-readable non-transitory storage media, or any suitable combination of two or more of these, where appropriate.

Claim 1:
A method, comprising:
determining (<NUM>) an object point of interest, POI, (<NUM>) in an image (<NUM>) generated by a camera (<NUM>) mounted to a vehicle (<NUM>), wherein the object POI (<NUM>) is associated with a physical object (<NUM>);
mapping (<NUM>) the object POI (<NUM>) in the image (<NUM>) to a centerline (<NUM>) of a railroad track (<NUM>) represented in the image (<NUM>) to generate a POI (<NUM>);
determining (<NUM>) a first distance (<NUM>) along the centerline (<NUM>) from the POI (<NUM>) to the camera (<NUM>) using a number of pixels from the POI (<NUM>) of the image (<NUM>) to an outer boundary (<NUM>) of the image (<NUM>) and a view angle (<NUM>) of the camera (<NUM>);
determining (<NUM>) a second distance (<NUM>) from the camera (<NUM>) to a Global Positioning System, GPS, unit (<NUM>) mounted to the vehicle (<NUM>); and
adding (<NUM>) the first distance (<NUM>) along the centerline (<NUM>) to the second distance (<NUM>) to determine an offset distance (<NUM>) from the POI (<NUM>) to the GPS unit (<NUM>) mounted to the vehicle (<NUM>).