Camera image data processing method and device, electronic equipment and medium

By determining the time offset according to the initial parameters and exposure delay time range in the multi-camera system and setting the exposure delay time, the problem of processor pressure when multiple cameras transmit images in parallel is solved, and the effect of reducing data flow peaks and alleviating interface pressure is achieved.

CN119743572APending Publication Date: 2025-04-01BEIJING BAIDU NETCOM SCI & TECH CO LTD
View PDF 6 Cites 0 Cited by

Patent Information

Application Number
CN202411845610.1
Authority / Receiving Office
CN · China
Patent Type
Applications(China)
Current Assignee / Owner
Filing Date
2024-12-13
Publication Date
2025-04-01

AI Technical Summary

Technical Problem

When multiple cameras transmit captured images in parallel for panoramic stitching, the processor interface continues to have high peak bandwidth, resulting in processor pressure, delay and frame drops.

Method used

According to the initial parameters of the camera itself and the exposure delay time range that can realize panoramic image stitching, the better time offset between every two cameras in a multiple camera is determined, and the exposure delay time between adjacent two cameras is set based on this.

Benefits of technology

While ensuring the panoramic image quality, the peak of transmission data traffic when images collected by multiple cameras are transmitted to the processor in parallel, alleviating the interface pressure and data buffering pressure when the processor receives image data.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN119743572A_ABST
    Figure CN119743572A_ABST
Patent Text Reader

Abstract

The invention provides a camera image data processing method and device, electronic equipment and a medium, and relates to the technical field of image processing, in particular to the technical field of image transmission, image splicing and automatic driving. According to the implementation scheme, initial camera parameters are obtained; determining a target condition according to the initial camera parameter; at least one first time offset is determined according to the target condition, each first time offset in the at least one first time offset indicates the exposure delay time between every two adjacent cameras in the multiple cameras, and the exposure delay time between every two adjacent cameras in the multiple cameras is determined according to the exposure delay time; when the exposure delay time between every two adjacent cameras in the multiple cameras is set based on each first time offset, a first flow peak value generated in the process that the multiple cameras transmit the multiple images to the processor in parallel is smaller than a first threshold value; and setting the exposure delay time between every two adjacent cameras in the multiple cameras according to the at least one first time offset.
Need to check novelty before this filing date? Find Prior Art

Description

Technical Field

[0001] The present disclosure relates to the field of image processing technology, in particular to the field of image transmission, image stitching and autonomous driving technology, and specifically to a method, device, electronic device, computer-readable storage medium and computer program product for processing camera image data. Background Art

[0002] Multiple images with overlapping areas can be captured by synchronously triggering the exposure of multiple cameras, so that the captured multiple images can be transmitted in parallel to the processor for image stitching to obtain a panoramic image.

[0003] The methods described in this section are not necessarily methods that have been previously conceived or employed. Unless otherwise indicated, it should not be assumed that any method described in this section is considered to be prior art simply because it is included in this section. Similarly, unless otherwise indicated, the issues mentioned in this section should not be considered to have been recognized in any prior art. Summary of the invention

[0004] The present disclosure provides a method, an apparatus, an electronic device, a computer-readable storage medium, and a computer program product for processing camera image data.

[0005] According to one aspect of the present disclosure, a method for processing camera image data is provided, comprising: obtaining initial camera parameters, wherein the initial camera parameters are used for each camera in a multi-channel camera, and the multi-channel camera is used to collect multiple images and transmit the multiple images in parallel to a processor for panoramic image stitching; determining a target condition according to the initial camera parameters, wherein the target condition indicates a range of exposure delay time allowed to be set between each adjacent two cameras in the multi-channel camera; determining at least one first time offset according to the target condition, wherein each first time offset of the at least one first time offset indicates the exposure delay time between each adjacent two cameras in the multi-channel camera, and when the exposure delay time between each adjacent two cameras in the multi-channel camera is set based on each first time offset, a first traffic peak value generated in the process of the multi-channel camera transmitting the multiple images in parallel to the processor is less than a first threshold; and setting the exposure delay time between each adjacent two cameras in the multi-channel camera according to the at least one first time offset.

[0006] According to another aspect of the present disclosure, a device for processing camera image data is provided, comprising: an acquisition module configured to acquire initial camera parameters, wherein the initial camera parameters are used for each camera in a multi-channel camera, and the multi-channel camera is used to collect multiple images and transmit the multiple images in parallel to a processor for panoramic image stitching; a first determination module configured to determine a target condition according to the initial camera parameters, wherein the target condition indicates a range of exposure delay time allowed to be set between each adjacent two cameras in the multi-channel camera; a second determination module configured to determine at least one first time offset according to the target condition, wherein each of the at least one first time offset indicates an exposure delay time between each adjacent two cameras in the multi-channel camera when the multi-channel camera is triggered in sequence, and when the exposure delay time between each adjacent two cameras in the multi-channel camera is set based on each first time offset, a first traffic peak value generated in the process of the multi-channel camera transmitting the multiple images in parallel to the processor is less than a first threshold; and a first setting module configured to set the exposure delay time between each adjacent two cameras in the multi-channel camera according to the at least one first time offset.

[0007] According to another aspect of the present disclosure, an electronic device is provided, comprising: at least one processor; and a memory communicatively connected to the at least one processor; wherein the memory stores instructions executable by the at least one processor, and the instructions are executed by the at least one processor so that the at least one processor can execute the above method.

[0008] According to another aspect of the present disclosure, a non-transitory computer-readable storage medium storing computer instructions is provided, wherein the computer instructions are used to enable the computer to execute the above method.

[0009] According to another aspect of the present disclosure, a computer program product is provided, comprising a computer program, wherein the computer program implements the above method when executed by a processor.

[0010] According to one or more embodiments of the present disclosure, a method for processing camera image data is provided. For a scenario in which multiple images for panoramic stitching are collected by multiple cameras through parallel transmission, an optimal time offset between every two cameras in the multiple cameras is determined according to the initial parameters of the cameras themselves and an exposure delay time range that can achieve panoramic image stitching. When the multiple cameras are triggered, the exposure delay time between two adjacent cameras is set based on the optimal time offset. This ensures the quality of a panoramic image obtained by stitching images collected by multiple cameras while reducing the peak value of transmission data traffic when the multiple images collected by the multiple cameras are transmitted in parallel to a processor, thereby effectively alleviating the interface pressure and data cache pressure on the processor when receiving image data.

[0011] It should be understood that the content described in this section is not intended to identify the key or important features of the embodiments of the present disclosure, nor is it intended to limit the scope of the present disclosure. Other features of the present disclosure will become easily understood through the following description. BRIEF DESCRIPTION OF THE DRAWINGS

[0012] The accompanying drawings exemplarily illustrate the embodiments and constitute a part of the specification, and together with the text description of the specification, are used to explain the exemplary implementation of the embodiments. The embodiments shown are for illustrative purposes only and do not limit the scope of the claims. In all drawings, the same reference numerals refer to similar but not necessarily identical elements.

[0013] Figure 1 is a schematic diagram illustrating an example system in which the various methods described herein may be implemented according to an exemplary embodiment;

[0014] Figure 2 is a schematic diagram illustrating an example panoramic image generation system in which the various methods described herein may be implemented according to an exemplary embodiment;

[0015] Figure 3 A flowchart showing a method for processing camera image data according to an embodiment of the present disclosure is shown;

[0016] Figure 4 A partial flow chart showing another method for processing camera image data according to an embodiment of the present disclosure;

[0017] Figure 5a A schematic diagram showing a pixel row exposure period of a camera image according to an embodiment of the present disclosure is shown;

[0018] Figure 5b and Figure 5c Schematic diagrams of data flow in the process of multiple cameras transmitting collected image data in parallel to a processor when the exposure time delay is not set and is set respectively.

[0019] Figure 6 A partial flow chart showing another method for processing camera image data according to an embodiment of the present disclosure;

[0020] Figure 7 A partial flow chart showing another method for processing camera image data according to an embodiment of the present disclosure;

[0021] Figure 8 A partial flow chart showing another method for processing camera image data according to an embodiment of the present disclosure;

[0022] Fig. 9 A structural block diagram showing a device for processing camera image data according to an embodiment of the present disclosure; and

[0023] Fig.10 A structural block diagram of an exemplary electronic device that can be used to implement the embodiments of the present disclosure is shown. DETAILED DESCRIPTION

[0024] The following is a description of exemplary embodiments of the present disclosure in conjunction with the accompanying drawings, including various details of the embodiments of the present disclosure to facilitate understanding, which should be considered as merely exemplary. Therefore, it should be recognized by those of ordinary skill in the art that various changes and modifications may be made to the embodiments described herein without departing from the scope of the present disclosure. Similarly, for the sake of clarity and conciseness, the description of well-known functions and structures is omitted in the following description.

[0025] In the present disclosure, unless otherwise specified, the use of the terms "first", "second", etc. to describe various elements is not intended to limit the positional relationship, temporal relationship, or importance relationship of these elements, and such terms are only used to distinguish one element from another element. In some examples, the first element and the second element may refer to the same instance of the element, and in some cases, based on the description of the context, they may also refer to different instances.

[0026] The terms used in the description of various examples in this disclosure are only for the purpose of describing specific examples and are not intended to be limiting. Unless the context clearly indicates otherwise, if the number of elements is not specifically limited, the element can be one or more. In addition, the term "and / or" used in this disclosure covers any one of the listed items and all possible combinations.

[0027] In the related art, a method is proposed to acquire multiple images with overlapping areas by synchronously triggering the exposure of multiple cameras, and then transmit the acquired multiple images in parallel to the processor for image stitching to obtain a panoramic image. However, this method of transmitting multiple images in parallel causes the processor interface to have a continuous high peak bandwidth, which causes processor pressure and is very likely to cause delays and frame drops.

[0028] To solve the above problems, the present disclosure provides a method for processing camera image data. For a scenario in which multiple images for panoramic stitching are collected by multiple cameras through parallel transmission, an optimal time offset between every two cameras in the multiple cameras is determined according to the initial parameters of the cameras themselves and an exposure delay time range that can achieve panoramic image stitching. When the multiple cameras are triggered, the exposure delay time between two adjacent cameras is set based on the optimal time offset. This ensures the quality of the panoramic image obtained by stitching the images collected by the multiple cameras while reducing the peak value of the transmission data traffic when the multiple images collected by the multiple cameras are transmitted in parallel to the processor, thereby effectively alleviating the interface pressure and data cache pressure of the processor when receiving image data.

[0029] The embodiments of the present disclosure will be described in detail below with reference to the accompanying drawings.

[0030] Figure 1 FIG. 1 is a schematic diagram of an exemplary system 100 in which various methods and apparatuses described herein may be implemented according to an embodiment of the present disclosure. Figure 1 , the system 100 includes one or more client devices 101, 102, 103, 104, 105, and 106, a server 120, and one or more communication networks 110 coupling the one or more client devices to the server 120. The client devices 101, 102, 103, 104, 105, and 106 may be configured to execute one or more applications.

[0031] In an embodiment of the present disclosure, the server 120 may run one or more services or software applications that enable execution of the processing method of camera image data.

[0032] In some embodiments, server 120 may also provide other services or software applications that may include non-virtualized environments and virtualized environments. In some embodiments, these services may be provided as web-based services or cloud services, such as provided to users of client devices 101, 102, 103, 104, 105, and / or 106 under a software as a service (SaaS) model.

[0033] exist Figure 1In the configuration shown, the server 120 may include one or more components that implement the functions performed by the server 120. These components may include software components, hardware components, or a combination thereof that can be executed by one or more processors. Users operating client devices 101, 102, 103, 104, 105, and / or 106 may in turn utilize one or more client applications to interact with the server 120 to utilize the services provided by these components. It should be understood that a variety of different system configurations are possible, which may differ from the system 100. Therefore, Figure 1 is an example of a system for implementing the camera image data processing methods described herein and is not intended to be limiting.

[0034] The user may use client devices 101, 102, 103, 104, 105 and / or 106 to perform the method of processing camera image data. The client device may provide an interface that enables the user of the client device to interact with the client device. The client device may also output information to the user via the interface. Figure 1 Only six client devices are depicted, but one skilled in the art will appreciate that the present disclosure may support any number of client devices.

[0035] Client devices 101, 102, 103, 104, 105 and / or 106 may include various types of computer devices, such as portable handheld devices, general-purpose computers (such as personal computers and laptop computers), workstation computers, wearable devices, smart screen devices, self-service terminal devices, service robots, game systems, thin clients, various messaging devices, sensors or other sensing devices, etc. These computer devices may run various types and versions of software applications and operating systems, such as MICROSOFT Windows, APPLE iOS, UNIX-like operating systems, Linux or Linux-like operating systems (such as GOOGLE Chrome OS); or include various mobile operating systems, such as MICROSOFT Windows Mobile OS, iOS, Windows Phone, Android. Portable handheld devices may include cellular phones, smart phones, tablet computers, personal digital assistants (PDAs), etc. Wearable devices may include head-mounted displays (such as smart glasses) and other devices. Game systems may include various handheld game devices, Internet-enabled game devices, etc. Client devices are capable of executing various different applications, such as various Internet-related applications, communication applications (such as email applications), short message service (SMS) applications, and may use various communication protocols.

[0036] The network 110 may be any type of network known to those skilled in the art that may support data communications using any of a variety of available protocols, including but not limited to TCP / IP, SNA, IPX, etc. By way of example only, the one or more networks 110 may be a local area network (LAN), an Ethernet-based network, a token ring, a wide area network (WAN), the Internet, a virtual network, a virtual private network (VPN), an intranet, an extranet, a public switched telephone network (PSTN), an infrared network, a wireless network (e.g., Bluetooth, WIFI), and / or any combination of these and / or other networks.

[0037] Server 120 may include one or more general purpose computers, dedicated server computers (e.g., PC (personal computer) servers, UNIX servers, mid-range servers), blade servers, mainframe computers, server clusters, or any other suitable arrangement and / or combination. Server 120 may include one or more virtual machines running virtual operating systems, or other computing architectures involving virtualization (e.g., one or more flexible pools of logical storage devices that may be virtualized to maintain a server's virtual storage device). In various embodiments, server 120 may run one or more services or software applications that provide the functionality described below.

[0038] The computing units in the server 120 may run one or more operating systems including any of the above operating systems and any commercially available server operating systems. The server 120 may also run any of a variety of additional server applications and / or middle-tier applications, including HTTP servers, FTP servers, CGI servers, JAVA servers, database servers, etc.

[0039] In some implementations, server 120 may include one or more applications to analyze and consolidate data feeds and / or event updates received from users of client devices 101, 102, 103, 104, 105, and 106. Server 120 may also include one or more applications to display data feeds and / or real-time events via one or more display devices of client devices 101, 102, 103, 104, 105, and 106.

[0040] In some embodiments, the server 120 may be a server of a distributed system, or a server combined with a blockchain. The server 120 may also be a cloud server, or an intelligent cloud computing server or intelligent cloud host with artificial intelligence technology. A cloud server is a host product in a cloud computing service system to solve the defects of difficult management and weak business scalability in traditional physical hosts and virtual private servers (VPS) services.

[0041] The system 100 may also include one or more databases 130. In some embodiments, these databases may be used to store camera parameter information and image information. For example, one or more of the databases 130 may be used to store information such as images to be stitched. The databases 130 may reside in various locations. For example, the database used by the server 120 may be local to the server 120, or may be remote from the server 120 and may communicate with the server 120 via a network-based or dedicated connection. The databases 130 may be of different types. In some embodiments, the database used by the server 120 may be, for example, a relational database. One or more of these databases may store, update, and retrieve data to and from the database in response to commands.

[0042] In some embodiments, one or more of the databases 130 may also be used by applications to store application data. The databases used by the applications may be different types of databases, such as a key-value store, an object store, or a conventional store backed by a file system.

[0043] Figure 1 The system 100 may be configured and operated in various ways to enable the application of various methods and apparatuses described in the present disclosure.

[0044] Figure 2 A schematic diagram of an example panoramic image generation system 200 is shown in which the various methods described herein may be implemented according to an example embodiment.

[0045] like Figure 2 As shown, the system 200 includes a multi-channel camera 210, a deserializer 220, an image processing chip 230, an FPGA processing unit 240 and a processor 250, wherein the FPGA processing unit 240 further includes a MIPI IP interface 241, a FIFO data buffer 242, a DMA (Direct Memory Access) module 243 and a PCIe IP interface 244.

[0046] Exemplarily, the multi-channel camera 210 can be, for example, an 8-channel 8MP camera, so that 8 8MP images can be simultaneously captured as images to be stitched, and, with the FPGA processing unit 240 as the intermediary, the 8 images captured by the 8-channel camera can be transmitted in parallel to the processor 250 for image stitching processing.

[0047] Exemplarily, the deserializer 220 may be, for example, a MAX96718 deserializer.

[0048] Exemplarily, the image processing chip 230 may be, for example, an ISP (Image Signal Processor) image processing chip.

[0049] Exemplarily, the DMA module 243 may further include a FIFO data interface.

[0050] It should be understood that the system 200 is a commonly used panoramic image generation system in the art, and those skilled in the art are able to know the specific data processing flow of each module therein, which will not be described in detail.

[0051] Figure 3 A flowchart of a method for processing camera image data according to an embodiment of the present disclosure is shown.

[0052] like Figure 3 As shown, the camera image data processing method 300 includes:

[0053] Step 310: obtaining initial camera parameters, wherein the initial camera parameters are used for each camera in a multi-channel camera, and the multi-channel camera is used to capture multiple images and transmit the multiple images in parallel to a processor for panoramic image stitching;

[0054] Step 320: determining a target condition according to the initial camera parameters, wherein the target condition indicates a range of exposure delay time allowed to be set between each two adjacent cameras in the multi-channel camera;

[0055] Step 330: determining at least one first time offset according to a target condition, wherein each of the at least one first time offset indicates an exposure delay time between each two adjacent cameras in the multi-channel camera, and when the exposure delay time between each two adjacent cameras in the multi-channel camera is set based on each first time offset, a first traffic peak value generated in a process in which the multi-channel camera transmits multiple images in parallel to the processor is less than a first threshold value; and

[0056] Step 340: setting an exposure delay time between every two adjacent cameras in the multiple cameras according to at least one first time offset.

[0057] Therefore, for the scenario in which multiple images for panoramic stitching are collected by multiple cameras in parallel, the optimal time offset between every two cameras in the multiple cameras is determined according to the initial parameters of the cameras themselves and the exposure delay time range that can achieve panoramic image stitching, so that when the multiple cameras are triggered, the exposure delay time between two adjacent cameras is set based on the optimal time offset. This ensures the quality of the panoramic image obtained by stitching the images collected by the multiple cameras while reducing the peak value of the transmission data traffic when the multiple images collected by the multiple cameras are transmitted in parallel to the processor, effectively alleviating the interface pressure and data cache pressure of the processor when receiving image data.

[0058] Figure 4 A partial flow chart of another method for processing camera image data according to an embodiment of the present disclosure is shown.

[0059] According to some embodiments, Figure 4 As shown, step 320 includes:

[0060] Step 410: determining a pixel row readout time according to the initial camera parameters, wherein the pixel row readout time indicates a time for reading out data of a corresponding pixel row after exposure; and

[0061] Step 420: determining a target condition according to an image stitching requirement and a pixel row readout time, wherein the image stitching requirement indicates a range of exposure delay times that are allowed to be set in order to make the feature similarity between every two images to be stitched from the plurality of images greater than a third threshold.

[0062] According to one or more embodiments, the camera image is exposed in units of pixel rows. Figure 5a The grayscale area in the figure indicates multiple pixel rows, and after each pixel row in the grayscale area is exposed, the data of the pixel row after exposure needs to be read out for transmission. At this time, the "GAP" area shown in the diagonal area on the right and bottom of the figure is generated.

[0063] In other words, the exposure period of each pixel row is composed of the exposure time (Exposure time) of its corresponding grayscale part and the readout time (Readout time) of the diagonal part, and the pixel row readout time in step 410 corresponds to the readout time of the diagonal area at the end of the corresponding pixel row.

[0064] Except for the pixel row end area on the right, Figure 5aThe readout time of the last row of pixels of the current frame image shown also includes the bottommost oblique line area (the time interval between two parallel image transmissions). It should be noted that in the optimization process, since the readout time of the last row of pixels is the longest, the readout time of the non-last row of pixels is used as the pixel row readout time (constraint condition) in method 300, thereby satisfying the readout time restriction requirements of all pixel rows at the same time.

[0065] Exemplarily, the pixel row readout time in step 410 may be used as an upper limit value of the optional range of the first time offset, so that the pixel row readout time may be used as one of the constraints in the process of optimizing the first time offset in step 330 .

[0066] Figure 5b and Figure 5c The data transmission flow in the process of multiple cameras transmitting the collected image data to the processor in parallel when the exposure time delay is not set and when the exposure time delay is set are respectively shown.

[0067] See also Figure 5b , which shows the transmission data flow of image transmission when the exposure time delay is not set (the first time offset is equal to 0) and the multi-channel camera is 8-channel 8MP camera. Figure 5b It can be seen that at the first moment of the transmission process, each of the 8 cameras simultaneously transmits the data of one pixel row in the image it has collected to the processor. Therefore, the processor will simultaneously receive the image data corresponding to eight pixel rows, which is at the peak moment of receiving traffic. At the second moment, all 8 cameras are in the pixel row readout time (GAP), so the amount of data received by the processor is 0.

[0068] See also Figure 5c , which shows the transmission data flow of image transmission when the exposure time delay is set to 20μs (the first time offset is 20μs) and the multi-channel camera is 8-channel 8MP camera. Compared with Figure 5b , it can be seen Figure 5c At every moment in the process, at least one camera is always in the pixel row readout time. Therefore, after setting the exposure time delay, the data flow received by the processor at any moment is less than Figure 5b The traffic peak value at the first moment in the process is reduced, thereby achieving traffic peak shaving.

[0069] It should be noted that although Figure 5c Each moment in the image corresponds to a complete GAP (pixel row reading time) in at least one camera, but based on different exposure time delay settings, the current moment may also correspond to half a GAP, one third of a GAP, or one fifth of a GAP in the camera.

[0070] Therefore, under the same hardware conditions, by utilizing the pixel row readout time to perform interleaved transmission of data and GAP, the data flow during parallel transmission of multiple image data is effectively smoothed, the data receiving pressure and cache pressure of the processor interface are reduced, and the possibility of delay and frame loss is reduced.

[0071] Furthermore, by taking the image stitching requirements of panoramic images as constraints for optimization, the first time offset finally obtained can effectively take into account both data transmission pressure and image stitching quality, so as to be suitable for scenarios such as autonomous driving that require simultaneous processing of a large amount of image data and have high requirements for panoramic image stitching quality.

[0072] In step 310, the same initial camera parameters may be set for each camera in the multiple cameras to improve the feature similarity between images captured by each camera, so that the stitched panoramic image can have a higher degree of fusion and coherence.

[0073] According to some embodiments, the initial camera parameters include at least the camera frame rate, pixel clock, and the number of pixel columns and pixel rows of the captured image of each camera, and step 410 includes: determining the pixel row readout time based on the camera frame rate, pixel clock, number of pixel columns and number of pixel rows.

[0074] Depend on Figure 5a It can be seen that the pixel row readout time in step 410 is associated with the number of pixel rows and columns in the current frame, the camera frame rate and the pixel clock. Therefore, the pixel row readout time can be accurately calculated based on the above four parameters to serve as one of the constraints for optimizing the time offset.

[0075] Figure 6 A partial flow chart of another method for processing camera image data according to an embodiment of the present disclosure is shown.

[0076] According to some embodiments, Figure 6 As shown, step 330 includes:

[0077] Step 631: determining a plurality of second time offsets according to a target condition, wherein each of the plurality of second time offsets indicates an exposure delay time between each two adjacent cameras in a plurality of cameras;

[0078] Step 632: triggering the multi-channel cameras based on each second time offset, respectively, to obtain a plurality of second traffic peaks corresponding to the plurality of second time offsets, wherein each of the plurality of second traffic peaks indicates a traffic peak generated in a process in which the multi-channel cameras transmit a plurality of images in parallel to the processor based on the corresponding second time offset; and

[0079] Step 633: Filter out at least one second traffic peak value that is smaller than the first threshold value from the multiple second traffic peak values, and use at least one second time offset corresponding to the at least one second traffic peak value as at least one first time offset.

[0080] Based on this, an optional second time offset is first determined according to the image stitching requirements and the pixel row readout time, and then the second time offset with better smoothing data flow effect is selected as the first time offset based on the trigger test. The implementation method is simple, efficient and accurate.

[0081] According to some embodiments, the image stitching requirements include at least one of the following: a maximum transmission bandwidth allowed by an interface of a processor, a maximum data cache amount allowed by the processor, and a maximum value of an exposure delay time that is allowed to be set so that the feature similarity between every two images to be stitched from the multiple images is greater than a third threshold.

[0082] From the perspective of image stitching, each of the multiple images used for panoramic image stitching has an overlapping area with at least one other image, so that the image stitching can be achieved by determining the feature similarity between the two images based on the overlapping area. Therefore, if the first time offset is too large, the overlapping area between the collected images is too small or even does not exist, and effective stitching cannot be achieved.

[0083] In addition, from the perspective of data transmission, although the data transmission peak can be reduced by setting the first time offset, if the reduced data transmission peak is still greater than the maximum transmission bandwidth allowed by the processor interface and the maximum cache data amount allowed by the processor, the processor cannot completely receive the image data transmitted in parallel, and there will also be time delays and frame losses, which will affect the quality of the stitched panoramic image.

[0084] Therefore, taking the above three items as the image stitching requirements can minimize the impact that the first time offset may have on the panoramic image stitching and determine the quality of the final panoramic image.

[0085] In one or more embodiments, in order to simplify the processing flow, any one or any two of the above three items may be used as image stitching requirements to strike a balance between processing cost and panoramic image quality.

[0086] In the example, for Figure 2 In the panoramic image stitching system 200 with 8-channel 8MP cameras shown, the maximum transmission bandwidth allowed by the processor interface may be, for example, 7.63 GB / s, and the maximum data cache capacity allowed by the processor may be, for example, 5600 B.

[0087] According to one or more embodiments, in step 330, a first threshold of the traffic peak value may be determined based on at least one of a maximum transmission bandwidth allowed by an interface of the processor and a maximum data cache amount allowed by the processor.

[0088] According to one or more embodiments, at step 420, one or more discrete first time offsets are determined according to the image stitching requirement and the pixel row readout time.

[0089] According to one or more embodiments, in step 420, an optional range of the time offset can also be determined based on the image stitching requirements and the pixel row readout time, and a plurality of optional time offsets can be determined from the optional range with the target time unit as an interval to perform a flow peak test to determine at least one first time offset.

[0090] Exemplarily, according to the image stitching requirements and the pixel row readout time, the optional range is determined to be [0, 50μs]. If 1μs is used as the target time unit, the optional time offsets include 0, 1μs, 2μs, 3μs...50μs. After performing a flow peak test, 2μs, 4μs, 13μs and 25μs are determined as at least one first time offset.

[0091] According to one or more embodiments, in step 330, the first flow peak values ​​corresponding to each determined first time offset are the same or different.

[0092] In the example, the smallest first time offset can be selected from multiple first time offsets corresponding to the same first flow peak as the optimal solution to improve exposure efficiency. For example, 2μs, 4μs and 13μs correspond to the same first flow peak, then 2μs can be selected as the optimal first time offset and set as the exposure delay time of the camera.

[0093] According to some embodiments, panoramic image stitching includes panoramic image stitching for moving objects, and the maximum value of the exposure delay time that is allowed to be set so that the feature similarity between every two images to be stitched in the multiple images is greater than a third threshold is determined based on the following conditions: the moving speed of the moving object, the moving distance of the moving object corresponding to a single pixel point in the image captured by each camera, and the pixel offset allowed in the image captured by each camera to achieve panoramic image stitching.

[0094] In one or more embodiments, in order to simplify the processing flow, the maximum value of the exposure delay time that can be set can be determined based on any one or any two of the above three items to balance the processing cost and the panoramic image quality.

[0095] In scenarios such as autonomous driving, it is usually necessary to capture and stitch panoramic images of moving objects (such as a moving vehicle moving relative to roadside equipment, or pedestrians and obstacles moving relative to a moving vehicle). At this time, it is necessary to set the maximum allowable time offset based on the specific state parameters of the moving object to ensure that multiple clear images with sufficient continuity and overlap can be captured as images to be stitched.

[0096] In the example, a roadside device including 8 cameras needs to collect panoramic images of a road scene including a moving vehicle. It is known that the speed of the moving vehicle is 120km / h (33.33m / s), and the actual distance in the road scene corresponding to a single pixel in the image collected by each camera is 3.57mm / pixel, and the pixel offset allowed in the collected image is 1.5 pixels.

[0097] Based on this, the maximum value allowed for each first time offset to achieve panoramic image stitching can be determined in the following manner:

[0098] Maximum practical offset distance allowed = 1.5 pixels x 3.57mm / pixel = 5.355mm

[0099]

[0100] Therefore, 23 μs can be used as the maximum exposure delay time limit to ensure that the first time offset obtained by optimization can satisfy the requirement that the acquired images can be spliced ​​into a clear and complete panoramic image of the road scene of the moving vehicle.

[0101] Figure 7 A partial flow chart of another method for processing camera image data according to an embodiment of the present disclosure is shown.

[0102] According to some embodiments, Figure 7 As shown, in addition to steps 310 to 340, method 300 further includes:

[0103] Step 710: Perform a verification test on each first time offset of at least one first time offset;

[0104] Step 720: taking a first time offset that passes the verification test among the at least one first time offset as a third time offset to obtain at least one third time offset; and

[0105] Step 730: setting the exposure delay time between every two adjacent cameras in the multiple cameras according to at least one third time offset.

[0106] By performing a verification test on the at least one first time offset obtained through optimization, the validity of the at least one third time offset finally obtained can be further improved.

[0107] According to some embodiments, the verification test includes at least one of the following: verifying whether the first traffic peak value corresponding to each first time offset is less than the maximum transmission bandwidth allowed by the interface of the processor, verifying whether the first traffic peak value corresponding to each first time offset is less than the maximum data cache amount allowed by the processor, and verifying whether the image stitching error of the multiple images collected when the exposure delay between each adjacent two cameras in the multiple cameras is set based on each first time offset is less than a second threshold, wherein the image stitching error indicates the degree of feature difference between the areas used for image stitching between each two images in the multiple images.

[0108] Taking the above three items as image stitching requirements can effectively verify whether the determined first time offset will affect the stitching quality of the panoramic image, so as to further improve the quality of the final panoramic image.

[0109] Figure 8 A partial flow chart of another method for processing camera image data according to an embodiment of the present disclosure is shown.

[0110] According to some embodiments, Figure 8 As shown, in addition to steps 310 to 340, method 300 further includes:

[0111] Step 810: In response to at least one non-integer first time offset in the at least one first time offset, align and / or round the at least one non-integer first time offset to obtain at least one fourth time offset; and

[0112] Step 820: Update at least one first time offset based on at least one fourth time offset.

[0113] The first time offset obtained by optimization may be a floating point number, so by performing numerical simplification operations on it, the difficulty of data processing when setting the exposure time delay based on the first time offset can be reduced, so as to improve the practicality of the obtained first time offset.

[0114] Fig. 9 A structural block diagram of a device for processing camera image data according to an embodiment of the present disclosure is shown.

[0115] According to another aspect of the present disclosure, a device for processing camera image data is provided. Fig. 9As shown, the data quantization device 900 of the optimizer includes: an acquisition module 910, configured to acquire initial camera parameters, wherein the initial camera parameters are used for each camera in a multi-channel camera, and the multi-channel camera is used to collect multiple images and transmit the multiple images in parallel to a processor for panoramic image stitching; a first determination module 920, configured to determine a target condition according to the initial camera parameters, wherein the target condition indicates a range of exposure delay time allowed to be set between each adjacent two cameras in the multi-channel camera; a second determination module 930, configured to determine at least one first time offset according to the target condition, wherein each first time offset in the at least one first time offset indicates the exposure delay time between each adjacent two cameras in the multi-channel camera when the multi-channel camera is triggered in sequence, and when the exposure delay time between each adjacent two cameras in the multi-channel camera is set based on each first time offset, a first traffic peak value generated in the process of the multi-channel camera transmitting the multiple images in parallel to the processor is less than a first threshold; and a first setting module 940, configured to set the exposure delay time between each adjacent two cameras in the multi-channel camera according to the at least one first time offset.

[0116] According to another aspect of the present disclosure, an electronic device is also provided, comprising: at least one processor; and a memory communicatively connected to the at least one processor; wherein the memory stores instructions executable by the at least one processor, and the instructions are executed by the at least one processor so that the at least one processor can execute the aforementioned method.

[0117] According to another aspect of the present disclosure, a non-transitory computer-readable storage medium storing computer instructions is further provided, wherein the computer instructions are used to enable the computer to execute the aforementioned method.

[0118] According to another aspect of the present disclosure, a computer program product is also provided, including a computer program, wherein the computer program implements the aforementioned method when executed by a processor.

[0119] like Fig.10 As shown, the electronic device 1000 includes a computing unit 1001, which can perform various appropriate actions and processes according to a computer program stored in a read-only memory (ROM) 1002 or a computer program loaded from a storage unit 1008 into a random access memory (RAM) 1003. In the RAM 1003, various programs and data required for the operation of the electronic device 500 can also be stored. The computing unit 1001, the ROM 1002, and the RAM 1003 are connected to each other via a bus 1004. An input / output (I / O) interface 1005 is also connected to the bus 1004.

[0120] Multiple components in the electronic device 1000 are connected to the I / O interface 1005, including: an input unit 1006, an output unit 1007, a storage unit 1008 and a communication unit 1009. The input unit 1006 can be any type of device that can input information to the electronic device 1000. The input unit 1006 can receive input digital or character information, and generate key signal input related to user settings and / or function control of the electronic device, and can include but is not limited to a mouse, a keyboard, a touch screen, a trackpad, a trackball, a joystick, a microphone and / or a remote control. The output unit 1007 can be any type of device that can present information, and can include but is not limited to a display, a speaker, a video / audio output terminal, a vibrator and / or a printer. The storage unit 1008 can include but is not limited to a disk and an optical disk. The communication unit 1009 allows the electronic device 1000 to exchange information / data with other devices through a computer network such as the Internet and / or various telecommunication networks, and can include but is not limited to a modem, a network card, an infrared communication device, a wireless communication transceiver and / or a chipset, such as Bluetooth TM devices, 802.11 devices, WiFi devices, WiMax devices, cellular communication devices, and / or the like.

[0121] The computing unit 1001 may be a variety of general and / or special processing components with processing and computing capabilities. Some examples of the computing unit 1001 include, but are not limited to, a central processing unit (CPU), a graphics processing unit (GPU), various dedicated artificial intelligence (AI) computing chips, various computing units running machine learning model algorithms, digital signal processors (DSPs), and any appropriate processors, controllers, microcontrollers, etc. The computing unit 1001 performs the various methods and processes described above, such as a matrix calculation method based on a GPU. For example, in some embodiments, a matrix calculation method based on a GPU may be implemented as a computer software program, which is tangibly included in a machine-readable medium, such as a storage unit 1008. In some embodiments, part or all of the computer program may be loaded and / or installed on the electronic device 1000 via the ROM 1002 and / or the communication unit 1009. When the computer program is loaded into the RAM 1003 and executed by the computing unit 1001, one or more steps of the matrix calculation method based on the GPU described above may be performed. Alternatively, in other embodiments, the computing unit 1001 may be configured to execute a GPU-based matrix calculation method in any other appropriate manner (eg, by means of firmware).

[0122] Various implementations of the systems and techniques described above herein can be implemented in digital electronic circuit systems, integrated circuit systems, field programmable gate arrays (FPGAs), application specific integrated circuits (ASICs), application specific standard products (ASSPs), systems on chips (SOCs), complex programmable logic devices (CPLDs), computer hardware, firmware, software, and / or combinations thereof. These various implementations can include: being implemented in one or more computer programs that can be executed and / or interpreted on a programmable system including at least one programmable processor, which can be a special purpose or general purpose programmable processor that can receive data and instructions from a storage system, at least one input device, and at least one output device, and transmit data and instructions to the storage system, the at least one input device, and the at least one output device.

[0123] The program code for implementing the method of the present disclosure may be written in any combination of one or more programming languages. These program codes may be provided to a processor or controller of a general-purpose computer, a special-purpose computer, or other programmable data processing device, so that the program code, when executed by the processor or controller, enables the functions / operations specified in the flow chart and / or block diagram to be implemented. The program code may be executed entirely on the machine, partially on the machine, partially on the machine and partially on a remote machine as a stand-alone software package, or entirely on a remote machine or server.

[0124] In the context of the present disclosure, a machine-readable medium may be a tangible medium that may contain or store a program for use by or in conjunction with an instruction execution system, device, or equipment. A machine-readable medium may be a machine-readable signal medium or a machine-readable storage medium. A machine-readable medium may include, but is not limited to, an electronic, magnetic, optical, electromagnetic, infrared, or semiconductor system, device, or equipment, or any suitable combination of the foregoing. A more specific example of a machine-readable storage medium may include an electrical connection based on one or more lines, a portable computer disk, a hard disk, a random access memory (RAM), a read-only memory (ROM), an erasable programmable read-only memory (EPROM or flash memory), an optical fiber, a portable compact disk read-only memory (CD-ROM), an optical storage device, a magnetic storage device, or any suitable combination of the foregoing.

[0125] To provide interaction with a user, the systems and techniques described herein can be implemented on a computer having: a display device (e.g., a CRT (cathode ray tube) or LCD (liquid crystal display) monitor) for displaying information to the user; and a keyboard and pointing device (e.g., a mouse or trackball) through which the user can provide input to the computer. Other types of devices can also be used to provide interaction with the user; for example, the feedback provided to the user can be any form of sensory feedback (e.g., visual feedback, auditory feedback, or tactile feedback); and input from the user can be received in any form (including acoustic input, voice input, or tactile input).

[0126] The systems and techniques described herein may be implemented in a computing system that includes back-end components (e.g., as a data server), or a computing system that includes middleware components (e.g., an application server), or a computing system that includes front-end components (e.g., a user computer with a graphical user interface or a web browser through which a user can interact with implementations of the systems and techniques described herein), or a computing system that includes any combination of such back-end components, middleware components, or front-end components. The components of the system may be interconnected by any form or medium of digital data communication (e.g., a communication network). Examples of communication networks include: a local area network (LAN), a wide area network (WAN), and the Internet.

[0127] A computer system may include a client and a server. The client and the server are generally remote from each other and usually interact through a communication network. The relationship of client and server is generated by computer programs running on respective computers and having a client-server relationship with each other. The server may be a cloud server, a server of a distributed system, or a server combined with a blockchain.

[0128] It should be understood that the various forms of processes shown above can be used to reorder, add or delete steps. For example, the steps described in this disclosure can be performed in parallel, sequentially or in different orders, as long as the desired results of the technical solutions disclosed in this disclosure can be achieved, and this document does not limit this.

[0129] Although the embodiments or examples of the present disclosure have been described with reference to the accompanying drawings, it should be understood that the above-mentioned methods, systems and devices are merely exemplary embodiments or examples, and the scope of the present invention is not limited by these embodiments or examples, but only by the claims after authorization and their equivalent scope. Various elements in the embodiments or examples can be omitted or replaced by their equivalent elements. In addition, each step can be performed in an order different from that described in the present disclosure. Further, the various elements in the embodiments or examples can be combined in various ways. It is important that with the evolution of technology, many elements described herein can be replaced by equivalent elements that appear after the present disclosure.

Claims

1. A method for processing camera image data, comprising: Acquiring initial camera parameters, wherein the initial camera parameters are used for each camera in a multi-channel camera, and the multi-channel camera is used to capture multiple images and transmit the multiple images in parallel to a processor for panoramic image stitching; Determine a target condition according to the initial camera parameters, wherein the target condition indicates a range of exposure delay time allowed to be set between each two adjacent cameras in the multi-channel camera; Determining at least one first time offset according to the target condition, wherein each of the at least one first time offset indicates an exposure delay time between each two adjacent cameras in the multi-channel camera, and when the exposure delay time between each two adjacent cameras in the multi-channel camera is set based on each first time offset, a first traffic peak value generated in a process in which the multi-channel camera transmits the multiple images in parallel to the processor is less than a first threshold value; and The exposure delay time between every two adjacent cameras in the multiple cameras is set according to the at least one first time offset.

2. The method according to claim 1, wherein: The determining the target condition according to the initial camera parameters comprises: determining a pixel row readout time according to the initial camera parameters, wherein the pixel row readout time indicates a time for reading out data of a corresponding pixel row after exposure; and The target condition is determined according to an image stitching requirement and the pixel row readout time, wherein the image stitching requirement indicates a range of the exposure delay time that is allowed to be set so that the feature similarity between every two images stitched among the multiple images is greater than a third threshold.

3. The method according to claim 1, wherein: The determining at least one first time offset according to the target condition comprises: Determine a plurality of second time offsets according to the target condition, wherein each second time offset in the plurality of second time offsets indicates an exposure delay time between each two adjacent cameras in the plurality of cameras; Performing trigger tests on the multi-channel cameras based on each of the second time offsets respectively to obtain a plurality of second traffic peaks corresponding to the plurality of second time offsets, wherein each of the plurality of second traffic peaks indicates a traffic peak generated in a process in which the multi-channel cameras transmit the plurality of images in parallel to the processor based on the corresponding second time offset; and At least one second traffic peak value that is smaller than the first threshold value is screened out from the multiple second traffic peak values, and at least one second time offset corresponding to the at least one second traffic peak value is used as the at least one first time offset.

4. The method according to claim 2, wherein: The initial camera parameters include at least a camera frame rate, a pixel clock, and the number of pixel columns and pixel rows of the acquired image of each camera, and wherein determining the pixel row readout time according to the initial camera parameters includes: The pixel row readout time is determined according to the camera frame rate, the pixel clock, the number of pixel columns and the number of pixel rows.

5. The method according to claim 2 or 4, wherein: The image stitching requirements include at least one of the following: the maximum transmission bandwidth allowed by the interface of the processor, the maximum data cache amount allowed by the processor, and the maximum value of the exposure delay time allowed to be set so that the feature similarity between every two images stitched together among the multiple images is greater than a third threshold.

6. The method according to claim 5, wherein: The panoramic image stitching includes panoramic image stitching for a moving object, and wherein the maximum value of the exposure delay time that is allowed to be set so that the feature similarity between every two images to be stitched is greater than a third threshold is determined based on the following conditions: The moving speed of the moving object, the moving distance of the moving object corresponding to a single pixel point in the image captured by each camera, and the pixel offset allowed in the image captured by each camera to achieve the panoramic image stitching.

7. The method according to any one of claims 1 to 6, further comprising: Performing a verification test on each of the at least one first time offset, wherein the verification test is used to verify whether each of the first time offsets satisfies the requirement of being able to achieve the panoramic image stitching; Using the first time offset that passes the verification test among the at least one first time offset as a third time offset to obtain at least one third time offset; and The exposure delay time between every two adjacent cameras in the multiple cameras is set according to the at least one third time offset.

8. The method according to claim 7, wherein: The verification test includes at least one of the following: Verify whether the first traffic peak value corresponding to each first time offset is less than the maximum transmission bandwidth allowed by the interface of the processor, verify whether the first traffic peak value corresponding to each first time offset is less than the maximum data cache allowed by the processor, and verify whether the image stitching error of the multiple images collected when the exposure delay time between each adjacent two cameras in the multiple cameras is set based on each first time offset is less than a second threshold, wherein the image stitching error indicates the degree of feature difference between the areas used for image stitching between each two images in the multiple images.

9. The method according to any one of claims 1 to 8, further comprising: In response to at least one non-integer first time offset among the at least one first time offset, aligning and / or rounding the at least one non-integer first time offset to obtain at least one fourth time offset; as well as The at least one first time offset is updated based on the at least one fourth time offset.

10. A device for processing image data, comprising: An acquisition module is configured to acquire initial camera parameters, wherein the initial camera parameters are used for each camera in a multi-channel camera, and the multi-channel camera is used to capture multiple images and transmit the multiple images in parallel to a processor for panoramic image stitching; A first determination module is configured to determine a target condition according to the initial camera parameters, wherein the target condition indicates a range of exposure delay time allowed to be set between each two adjacent cameras in the multi-channel camera; a second determination module, configured to determine at least one first time offset according to the target condition, wherein each of the at least one first time offset indicates an exposure delay time between each adjacent two cameras in the multiple cameras when the multiple cameras are triggered in sequence, and when the exposure delay time between each adjacent two cameras in the multiple cameras is set based on each first time offset, a first traffic peak value generated in a process in which the multiple cameras transmit the multiple images to the processor in parallel is less than a first threshold value; and The first setting module is configured to set the exposure delay time between every two adjacent cameras in the multiple cameras according to the at least one first time offset.

11. The device according to claim 10, wherein: The first determining module comprises: A first determining submodule is configured to determine a pixel row readout time according to the initial camera parameters, wherein the pixel row readout time indicates a time for reading out data of a corresponding pixel row after exposure; and The second determination submodule is configured to determine the target condition according to the image stitching requirement and the pixel row readout time, wherein the image stitching requirement indicates the range of the exposure delay time that is allowed to be set so that the feature similarity between every two images stitched together among the multiple images is greater than a third threshold.

12. The device according to claim 10, wherein: The second determining module comprises: A determination submodule is configured to determine a plurality of second time offsets according to the target condition, wherein each second time offset in the plurality of second time offsets indicates an exposure delay time between each two adjacent cameras in the plurality of cameras; a test submodule, configured to perform a trigger test on the multi-channel camera based on each of the second time offsets, respectively, to obtain a plurality of second traffic peaks corresponding to the plurality of second time offsets, wherein each of the plurality of second traffic peaks indicates a traffic peak generated in a process in which the multi-channel camera transmits the plurality of images in parallel to the processor based on the corresponding second time offset; and The screening submodule is configured to screen out at least one second traffic peak value that is smaller than the first threshold value from the multiple second traffic peak values, and use at least one second time offset corresponding to the at least one second traffic peak value as the at least one first time offset.

13. The device according to claim 11, wherein: The initial camera parameters include at least the camera frame rate, pixel clock, and the number of pixel columns and pixel rows of the acquired image of each camera, and wherein the first determination module is configured as follows: The pixel row readout time is determined according to the camera frame rate, the pixel clock, the number of pixel columns and the number of pixel rows.

14. The device according to any one of claims 11 or 13, wherein: The image stitching requirements include at least one of the following: the maximum transmission bandwidth allowed by the interface of the processor, the maximum data cache amount allowed by the processor, and the maximum value of the exposure delay time allowed to be set so that the feature similarity between every two images stitched together among the multiple images is greater than a third threshold.

15. The device according to claim 14, wherein: The panoramic image stitching includes panoramic image stitching for a moving object, and wherein the maximum value of the exposure delay time that is allowed to be set so that the feature similarity between every two images to be stitched is greater than a third threshold is determined based on the following conditions: The moving speed of the moving object, the moving distance of the moving object corresponding to a single pixel point in the image captured by each camera, and the pixel offset allowed in the image captured by each camera to achieve the panoramic image stitching.

16. The apparatus according to any one of claims 9 to 15, further comprising: a verification module configured to perform a verification test on each of the at least one first time offset, wherein the verification test is used to verify whether each of the first time offsets satisfies the requirement of being able to achieve the panoramic image stitching; A third determining module is configured to use the first time offset that passes the verification test among the at least one first time offset as a third time offset to obtain at least one third time offset; and The second setting module is configured to set the exposure delay time between every two adjacent cameras in the multiple cameras according to the at least one third time offset.

17. The device according to claim 16, wherein: The verification test includes at least one of the following: Verify whether the first traffic peak value corresponding to each first time offset is less than the maximum transmission bandwidth allowed by the interface of the processor, verify whether the first traffic peak value corresponding to each first time offset is less than the maximum data cache allowed by the processor, and verify whether the image stitching error of the multiple images collected when the exposure delay between each adjacent two cameras in the multiple cameras is set based on each first time offset is less than a second threshold, wherein the image stitching error indicates the degree of feature difference between the areas used for image stitching between each two images in the multiple images.

18. The apparatus according to claims 11-17, further comprising: a numerical module configured to, in response to at least one non-integer first time offset in the at least one first time offset, align and / or round the at least one non-integer first time offset to obtain at least one fourth time offset; as well as An updating module is configured to update the at least one first time offset based on the at least one fourth time offset.

19. An electronic device comprising: at least one processor; as well as a memory communicatively coupled to the at least one processor; in The memory stores instructions that can be executed by the at least one processor, and the instructions are executed by the at least one processor to enable the at least one processor to perform the method according to any one of claims 1 to 9.

20. A non-transitory computer-readable storage medium storing computer instructions, wherein: The computer instructions are used to cause the computer to execute the method according to any one of claims 1-9.

21. A computer program product comprising a computer program, wherein: When the computer program is executed by a processor, the method according to any one of claims 1 to 9 is implemented.

Citation Information

Patent Citations

  • Sampling device and method based on parallel processing

    CN104270154A

  • Panoramic video synchronous splicing system and method and panoramic video display device

    CN107396068A

  • A multi-mode processing method of panoramic data based on limited bandwidth

    CN109089083A

  • Data transmission method and related device

    CN114257820A

  • Frame synchronization of multiple image capture devices

    US20180359405A1