v4.5.3

v4.5.3 は大規模なリリースです。OV5640 のオートフォーカス、アンチエイリアス処理されたライン描画、メインライン化されたハードウェア JPEG デコーダー、i.MX RT (RT1060) の大幅な機能強化、そしてカメラ/ISP に関する幅広い修正が含まれます。ほとんど使われていない画像メソッドがいくつか削除され、一部の ISP/ディスプレイ API が変更されました。以下の破壊的変更をお読みください。

ハイライト

  • OV5640 オートフォーカス — OpenMV 4 / 4 Plus / RT1060 で有効化されました (sensor.ioctl(sensor.IOCTL_TRIGGER_AUTO_FOCUS))。サンプルも追加されています。

  • アンチエイリアス処理された draw_line() と、メインライン化された STM32 ハードウェア JPEG デコーダー(JPEG の伸張がより高速になりました)。

  • OpenMV RT1060 に ulab、ISP 演算、set_framerate() / set_frame_callback()、大幅に拡張されたフレームバッファ、CAN ドライバが追加されました。

  • 破壊的変更: Image.div() / cartoon() / mul() が削除され、一部の ISP/ディスプレイ API が変更されました。破壊的変更を参照してください。

新機能

  • OV5640 オートフォーカス — OPENMV4、OPENMV4P、OPENMV RT1060 でオートフォーカスファームウェアが有効化されました。sensor.ioctl(sensor.IOCTL_TRIGGER_AUTO_FOCUS) でトリガーします。新しいサンプル 07-Sensor-Control/autofocus.py が追加されました。

  • アンチエイリアス処理されたライン描画draw_line() にアンチエイリアス処理が追加されました。

  • カスタム SPI ディスプレイコントローラーSPIDisplaycontroller= キーワードを受け付けるようになり、カスタムの初期化/コマンドシーケンス用に bus_write フックを公開するようになりました。

  • Image.ccm() の機能強化 — ネストされた 3x3 / 4x3 / 3x4 / 4x4 行列と ulab 配列(オプションでチャンネルごとのオフセット行を指定可能)を受け付けるようになりました。カラー補正のサンプルが追加されています。

  • i.MX RT JPEG キャプチャ — Arduino Portenta/Nicla Vision/Giga での sensor.JPEG キャプチャに加え、mimxrt ポートでの set_framerate()set_frame_callback() が追加されました。

  • TFLite モデル検証 — モデルが演算子順序のハッシュと演算子セットのサイズを保持するようになりました。

  • WiFi — CYW43 セキュリティモードの定数を追加しました。新しい i.MX RT ボード制御のサンプルスクリプト (Pin/ADC/CAN/I2C/PWM/SPI/UART/...) も追加されています。

その他の変更と改善

  • MicroPython を 1.22 に更新しました。CMSIS は 5.9.0 に更新されました。

  • メインライン化された STM32 ハードウェア JPEG デコーダー — オンチップコーデックでの JPEG 伸張がより高速になりました。

  • Image.invert() / negate() とバイナリ/数学系の画像演算を最適化しました (CMSIS 組み込み関数)。

  • rpcvl53l1x ライブラリを移植可能にしました(pyb の代わりに machine / time を使用)。これにより STM32 以外のポートでも動作します。

  • OpenMV H7 / H7 Plus / Pro / Pure Thermal および Arduino Giga / Nicla Vision / Portenta H7 で DMA アクセラレーションによるフレームバッファの memcpy を行うようにしました。STM32 では起動を高速化するため、スキャンごとに I2C デバイスを一度だけスキャンするようになりました。

バグ修正

カメラとセンサー:

  • STM32 のカメラ XCLK を正確な 50% デューティサイクルに修正し、カメラのクロック周波数がゼロに設定された場合のバグを修正しました。Bayer のクロップ+転置、YUV422 のカラーシフト、mimxrt ポートでの set_windowing() を修正しました。

  • GC2145 のチップ ID プローブと、回転して取り付けた場合の hmirror/vflip を修正しました。RT1062 での PAJ6100、および PixArt PAJ7620/PAW3902 の SPI バッファオーバーフローを修正しました。

画像処理:

  • find_rects() の roi クリッピング、morph() の小数オフセットの切り捨て、image.gamma() のコントラスト/明るさのデフォルト値、RGB565 での get_threshold() の A/B オフセット、および 8 の倍数でないサイズの JPEG デコードを修正しました。

システムとライブラリ:

  • 引数なしの machine.LED.value() が、LED の状態をクリアするのではなく状態を返すようになりました。共有バス上での SPI SSEL の deinit、RT1062 での machine.deepsleep()、演算子が欠落している場合の TF のクラッシュ、および connect() 時の WINC1500/ninaw10 NIC の自動有効化を修正しました。

ハードウェアとボードのサポート

  • OpenMV RT1060 — ulab と ISP 演算を有効化し、フレームバッファを拡大 (10M→20M)、fb_alloc を拡大 (2M→11M)、CAN ドライバを復元し、ヒープを増やしました。

  • Arduino GIGA — GC2145 カメラのサポートを追加し、GC2145/OV5640 の自動検出に対応しました(両者は同じ I2C アドレスを共有します)。

  • i.MX RTsensor.JPEG キャプチャをサポートしました。

破壊的な API 変更

v4.5.2 から v4.5.3 までのユーザーに見える API の破壊的変更です。対象範囲: modules/ 内の Python C モジュールと scripts/libraries/ 内の Python ライブラリ。

各変更にはその影響度のタグが付いています:

  • minor — 限定的な API。それを使用していたスクリプトにのみ影響します。

  • behavior — API は同じですが結果が異なります。チューニング済みのスクリプトを再確認してください。

変更はこの順序で影響度ごとにグループ化されています。コードを移植したいだけであれば、末尾の 移行チェックリスト に進んでください。各コミットハッシュは GitHub 上の差分にリンクしています。

削除された画像メソッド (minor)

Image.div()Image.cartoon()(およびそのサンプル)、Image.mul() が削除されました。

コミット: 7c932602e, 055a468b8, 4fe7fb63b

ディスプレイモジュール API (minor)

レガシーな udisplay モジュール名のフォールバックが削除されました。モジュールは display としてのみ登録されます。DSI 専用の dsi_write() / dsi_read() メソッドは bus_write() / bus_read() に置き換えられ、これらはすべてのディスプレイコントローラーで利用可能になりました。

コミット: 7df6694c3, 7d1f378a0

MQTT と tf.regression の API 変更 (minor)

mqtt ライブラリの MQTTClient が再設計されました。port が必須になり、新しい ssl_params / callback コンストラクタキーワードと connect()timeout 引数が追加されました。古い ssl= / port=0 のデフォルトは削除され、check_msg() はノンブロッキングになりました。tf.regression() は書き直され、シグネチャが regression(model, array) になり、1D/2D/3D および量子化された (int8) モデルを扱えるようになりました。

コミット: d12874c63, c5ec576c1

ISP / センサーの動作変更 (behavior)

Image.awb() が再設計されました。グレーワールド(デフォルト)と白色パッチ (max=True) が明示的になり、max 引数と Image.gamma()gamma / contrast / brightness 引数はキーワード専用になりました(位置引数での呼び出しは更新が必要です)。画像の転置は YUV422 では無効化されました(以前は誤った出力を生成していました)。YUV422 のカラーシフトは Bayer に合わせて修正されました。STM32 の JPEG パスは、破損した画像を生成する代わりに JPEG のジオメトリ不一致時にエラーを発生させるようになりました。WiFi AP モードは STM32 および i.MX RT ポートでデフォルトのセキュリティモードを適用するようになりました。

コミット: 36d5cecbd, 00500ccde, c1eeaefd6, 333fb2b5f, 55cab8733, c7d40f6af

移行チェックリスト

v4.5.3 へクリーンに移植するための一般的な作業は次のとおりです:

  1. Image.div() / cartoon() / mul() の使用をやめてください (削除されたメソッド)。

  2. ディスプレイモジュールを display としてインポートし、dsi_write/ dsi_readbus_write/bus_read に切り替えてください (ディスプレイ API の変更)。

  3. MQTTClient の生成(port が必須、ssl_params/callback)と、すべての tf.regression() 呼び出しを更新してください (ライブラリ API の変更)。

  4. awb()maxgamma()gamma/contrast/ brightness をキーワード引数として渡し、YUV422/転置と AP モードのセキュリティに関する前提を再確認してください (ISP/センサーの変更)。