Closed weilian1977 closed 1 year ago
与输入的图像格式、分辨率大小有关。
有没有大致的测试结果参考一下?
按照我个人的测试,参考如下: QVGA\YUV422 JPEG编码 33 VGA\YUV422 JPEG 编码 9
QVGA JPEG解码 65 VGA JPEG 解码 16
8bit 灰度图 VGA相当于仅有Y分量, JPEG 编码速度会不会快一些?
当然。MONO\Only Y 的格式,编码更快。
哪一款摄像头适合测试MONO格式JPEG编码速度呢?
推荐 S3 + SC031GS /SC035HGS。
VGA\YUV422 JPEG 编码时需要对Y、Cb、Cr三个分量进行DCT变换、量化、扫描、编码,是否可以认为,对于MONO\Only Y图像压缩运算量为YUV422图像压缩运算量的1/3? 是否可以估计VGA\MONO\Only Y JPEG 编码 27?
VGA 分辨率,Only Y 的 JPEG 编码应该是可以上 20fps+。 你可以直接伪造一个 Only Y VGA 的数据,在 S3 上测试下速率。
应该可用OV2640测一下吧? VGA 422YUV Y(640×480), U (320×240), V (320×240), VGA 8bit 灰度图 Y (640×480), 所以DCT、量化、编码计算量VGA 422YUV 大约(Y+U +V)/Y=1.5 倍于 VGA 8bit灰度图 ?所以8bit灰度图帧频大约是1.5*9=13.5fps?可以这样估计么?
最好不涉及任何摄像头,只用一个假数据测试Only Y JPEG 编码的能力。 理论研究不太好估算。 我原先好像测试过 VGA OnlyY 的JPEG 编码。很流畅,是个视频项目。
重要价值!很流畅至少15帧了吧
是的。15fps+
我修改了esp who中human_face_detection_web项目代码,使用OV3660摄像头,设置像素格式为灰度,分辨率为VGA,在frame2jpg(frame, 90, &_jpg_buf, &_jpg_buf_len)前后加了信息打印代码,输出如下,估计约为140ms?哪里需要优化么? I (21229) camera_httpd: JPEG compression begin I (21369) camera_httpd: JPEG compression end I (21469) camera_httpd: JPEG compression begin I (21609) camera_httpd: JPEG compression end I (21819) camera_httpd: JPEG compression begin I (21959) camera_httpd: JPEG compression end I (22049) camera_httpd: JPEG compression begin I (22189) camera_httpd: JPEG compression end I (22499) camera_httpd: JPEG compression begin I (22639) camera_httpd: JPEG compression end I (22719) camera_httpd: JPEG compression begin I (22859) camera_httpd: JPEG compression end I (23169) camera_httpd: JPEG compression begin I (23319) camera_httpd: JPEG compression end I (23399) camera_httpd: JPEG compression begin I (23539) camera_httpd: JPEG compression end I (23849) camera_httpd: JPEG compression begin I (23989) camera_httpd: JPEG compression end I (24079) camera_httpd: JPEG compression begin I (24219) camera_httpd: JPEG compression end I (24519) camera_httpd: JPEG compression begin I (24669) camera_httpd: JPEG compression end I (24749) camera_httpd: JPEG compression begin I (24889) camera_httpd: JPEG compression end I (25199) camera_httpd: JPEG compression begin I (25339) camera_httpd: JPEG compression end I (25419) camera_httpd: JPEG compression begin I (25559) camera_httpd: JPEG compression end I (25869) camera_httpd: JPEG compression begin I (26009) camera_httpd: JPEG compression end I (26099) camera_httpd: JPEG compression begin I (26239) camera_httpd: JPEG compression end I (26549) camera_httpd: JPEG compression begin I (26689) camera_httpd: JPEG compression end I (26779) camera_httpd: JPEG compression begin I (26919) camera_httpd: JPEG compression end I (27219) camera_httpd: JPEG compression begin I (27369) camera_httpd: JPEG compression end I (27449) camera_httpd: JPEG compression begin I (27589) camera_httpd: JPEG compression end I (27899) camera_httpd: JPEG compression begin I (28039) camera_httpd: JPEG compression end I (28129) camera_httpd: JPEG compression begin I (28269) camera_httpd: JPEG compression end I (28569) camera_httpd: JPEG compression begin I (28719) camera_httpd: JPEG compression end I (28799) camera_httpd: JPEG compression begin I (28939) camera_httpd: JPEG compression end I (29249) camera_httpd: JPEG compression begin I (29389) camera_httpd: JPEG compression end I (29479) camera_httpd: JPEG compression begin I (29609) camera_httpd: JPEG compression end I (29929) camera_httpd: JPEG compression begin I (30069) camera_httpd: JPEG compression end I (30149) camera_httpd: JPEG compression begin I (30289) camera_httpd: JPEG compression end I (30599) camera_httpd: JPEG compression begin I (30739) camera_httpd: JPEG compression end I (30829) camera_httpd: JPEG compression begin I (30969) camera_httpd: JPEG compression end I (31279) camera_httpd: JPEG compression begin I (31419) camera_httpd: JPEG compression end I (31499) camera_httpd: JPEG compression begin I (31639) camera_httpd: JPEG compression end I (31949) camera_httpd: JPEG compression begin I (32089) camera_httpd: JPEG compression end I (32179) camera_httpd: JPEG compression begin I (32319) camera_httpd: JPEG compression end I (32629) camera_httpd: JPEG compression begin I (32769) camera_httpd: JPEG compression end I (32849) camera_httpd: JPEG compression begin I (32989) camera_httpd: JPEG compression end I (33299) camera_httpd: JPEG compression begin I (33439) camera_httpd: JPEG compression end I (33529) camera_httpd: JPEG compression begin I (33669) camera_httpd: JPEG compression end I (33979) camera_httpd: JPEG compression begin I (34119) camera_httpd: JPEG compression end
不执行压缩。只是出帧的速率能达到 15fps 吗?
这个没有评估,因为对OV3660摄像头并不熟悉,不好评估摄像头的工作参数和输出帧频。frame2jpg(frame, 90, &_jpg_buf, &_jpg_buf_len)这个函数应该就是对图像数据进行jpeg压缩的函数。
你可以参考这里的代码,测试下摄像头输出的帧率是多少: https://github.com/espressif/esp32-camera/blob/master/test/test_camera.c#L168 或者你给一个 VGA 的假数据,只测试压缩的帧率。
ok!我试一下,您担心摄像头的数据更新速度低于压缩速度?
OV3660 4FPS Custom sensor 47FPS(21ms) and 7.5FPS(133ms)with JPEG compression @640*480,JPEG compression is about 111ms?
压缩很消耗内存和时间的。当前的移植很粗糙,没有针对平台进行优化。
这里有一个正在测试中的 jpeg lib。应该比当前 这里的压缩速率高一些。
https://github.com/espressif/esp-adf-libs/blob/master/esp_codec/include/codec/esp_jpeg_dec.h
ESP-S3-EYE dev board V1.1 flash and spram仅支持80Mhz?测试数据都是在80Mhz下测试的,相信设置为120Mhz的速度应该会有改进,但是设置为120Mhz,monitor输出以下信息 weilian@DESKTOP-MMQQ1CA:~/esp-who/examples/human_face_detection/web$ idf.py -p /dev/ttyS16 monitor Executing action: monitor Running idf_monitor in directory /home/weilian/esp-who/examples/human_face_detection/web Executing "/home/weilian/.espressif/python_env/idf4.4_py3.10_env/bin/python /home/weilian/esp-idf-v4.4.3_release_path_120mhz/tools/idf_monitor.py -p /dev/ttyS16 -b 115200 --toolchain-prefix xtensa-esp32s3-elf- --target esp32s3 /home/weilian/esp-who/examples/human_face_detection/web/build/human_face_detection_web.elf -m '/home/weilian/.espressif/python_env/idf4.4_py3.10_env/bin/python' '/home/weilian/esp-idf-v4.4.3_release_path_120mhz/tools/idf.py' '-p' '/dev/ttyS16'"... --- idf_monitor on /dev/ttyS16 115200 --- --- Quit: Ctrl+] | Menu: Ctrl+T | Help: Ctrl+T followed by Ctrl+H --- ESP-ROM:esp32s3-20210327 ESP-ROM:esp32s3-20210327 Build:Mar 27 2021 rst:0x15 (USB_UART_CHIP_RESET),boot:0x2a (SPI_FAST_FLASH_BOOT) Saved PC:0x4208127e 0x4208127e: esp_pm_impl_waiti at /home/weilian/esp-idf-v4.4.3_release_path_120mhz/components/esp_pm/pm_impl.c:839
SPIWP:0xee mode:DIO, clock div:1 load:0x3fce3808,len:0x470 load:0x403c9700,len:0xc00 load:0x403cc700,len:0x2ae8 entry 0x403c98e8 W (162) FLASH: DO NOT USE FOR MASS PRODUCTION! Timing parameters will be updated in future IDF version. I (163) opi psram: vendor id : 0x0d (AP) I (165) opi psram: dev id : 0x02 (generation 3) I (171) opi psram: density : 0x03 (64 Mbit) I (176) opi psram: good-die : 0x01 (Pass) I (181) opi psram: Latency : 0x01 (Fixed) I (185) opi psram: VCC : 0x01 (3V) I (190) opi psram: SRF : 0x01 (Fast Refresh) I (195) opi psram: BurstType : 0x01 (Hybrid Wrap) I (201) opi psram: BurstLen : 0x01 (32 Byte) I (206) opi psram: Readlatency : 0x02 (10 cycles@Fixed) I (212) opi psram: DriveStrength: 0x00 (1/1) W (217) PSRAM: DO NOT USE FOR MASS PRODUCTION! Timing parameters will be updated in future IDF version.
压缩很消耗内存和时间的。当前的移植很粗糙,没有针对平台进行优化。 这里有一个正在测试中的 jpeg lib。应该比当前 这里的压缩速率高一些。 https://github.com/espressif/esp-adf-libs/blob/master/esp_codec/include/codec/esp_jpeg_dec.h
没有说明文档么
最好不涉及任何摄像头,只用一个假数据测试Only Y JPEG 编码的能力。 理论研究不太好估算。 我原先好像测试过 VGA OnlyY 的JPEG 编码。很流畅,是个视频项目。 您是使用的那个代码呢?方便说么
按照我个人的测试,参考如下: QVGA\YUV422 JPEG编码 33 VGA\YUV422 JPEG 编码 9
目前测试看, QVGA 灰度JPEG编码 26 PSRAM@80M, VGA\灰度 JPEG 编码 7 PSRAM@80M, 如果考虑内存速度的影响,推测 QVGA 灰度JPEG编码 39 PSRAM@120M? VGA\灰度 JPEG 编码 10 PSRAM@120M?
但是ESP-S3-EYE dev board V1.1 flash and spram似乎仅支持80Mhz?
灰度图的模式下,如果 sensor 输出灰度图的速率能跟得上,编码速率不应该这么慢的。
我建议你可以再检查下这份配置,CPU、flash、PSRAM 的速率是不是已经最快了。
https://github.com/espressif/esp-iot-solution/blob/master/examples/camera/pic_server/sdkconfig.defaults#L3
你好 @WangYuxin-esp @weilian1977
看到了你之前的一些建议,很感谢。我最近也在测试jpeg的编码,目前的测试结果是在QVGA/RGB565的OV2640摄像头输入设置下,frame2jpg()这个jpeg压缩函数需要大约125ms才能压缩一张图片;在QVGA/GRAYSCALE下,大约需要46ms;在QVGA/YUV422下,需要158ms。这个速度是不是偏慢?还有哪些地方可以优化呢?我已经使用了这份设置:https://github.com/espressif/esp-iot-solution/blob/master/examples/camera/pic_server/sdkconfig.defaults#L3 (我用的是ESP32-CAM(esp32-s)模块,不是esp32S3, 但是也用的240mhz的主频,不知道这个是否有影响?) 主要的代码如下:
谢谢!
灰度图的模式下,如果 sensor 输出灰度图的速率能跟得上,编码速率不应该这么慢的。 我建议你可以再检查下这份配置,CPU、flash、PSRAM 的速率是不是已经最快了。 https://github.com/espressif/esp-iot-solution/blob/master/examples/camera/pic_server/sdkconfig.defaults#L3
核实了一下,基本是一致的,编码速度没有明显变化
如果直接WIFI传640*480 灰度 能到多少帧?
如果直接WIFI传640*480 灰度 能到多少帧?
@weilian1977 这个我测过,很慢,因为灰度图大小也有几十k,比jpeg(2~3k)大得多,wifi传不动。
如果直接WIFI传640*480 灰度 能到多少帧?
@weilian1977 这个我测过,很慢,因为灰度图大小也有几十k,比jpeg(2~3k)大得多,wifi传不动。 @xubo92 wifi的速度是多少?分析起来感觉不对啊?官方手册“支持 1T1R 模式,数据速率高达 150 Mbps”,按照640×480=307200byte=300kbyte,(150 Mbit/8)/300kbyte=(150×1024kbit/8)/300kbyte=64?考虑到乱七八糟,20帧总应该有?
按照我个人的测试,参考如下: QVGA\YUV422 JPEG编码 33 VGA\YUV422 JPEG 编码 9
QVGA JPEG解码 65 VGA JPEG 解码 16
esp-idf版本?esp32-camera版本?
@xubo92 wifi的速度是多少?分析起来感觉不对啊?官方手册“支持 1T1R 模式,数据速率高达 150 Mbps”,按照640×480=307200byte=300kbyte,(150 Mbit/8)/300kbyte=(150×1024kbit/8)/300kbyte=64?考虑到乱七八糟,20帧总应该有?
连的是家里的wifi 2.4GHz, ESP32的wifi没有做特别设置。按照理论算不成立。 很多帖子讲过esp32就算用原生支持的jpeg模式,也就30FPS上下不多,倒退算如果灰度图比jpeg图片大10倍以上,那么就只剩3FPS了。https://github.com/espressif/esp32-camera/issues/15
@xubo92 wifi的速度是多少?分析起来感觉不对啊?官方手册“支持 1T1R 模式,数据速率高达 150 Mbps”,按照640×480=307200byte=300kbyte,(150 Mbit/8)/300kbyte=(150×1024kbit/8)/300kbyte=64?考虑到乱七八糟,20帧总应该有?
连的是家里的wifi 2.4GHz, ESP32的wifi没有做特别设置。按照理论算不成立。 很多帖子讲过esp32就算用原生支持的jpeg模式,也就30FPS上下不多,倒退算如果灰度图比jpeg图片大10倍以上,那么就只剩3FPS了。#15
“esp32就算用原生支持的jpeg模式,也就30FPS上下”这个不一定是WIFI传输速度的问题,从很多应用的角度30FPS已经可以了,从传感器的角度30FPS对于非特殊场景的应用也差不多了
但是好像也确实有很多讲速度不高,或者只能几十M
This issue appears to be stale. Please close it if its no longer valid.
有没有对esp32S3 jpg编码解码的速度进行测试?