0
0

【量子画像処理】回転ブラーの実装

Last updated at Posted at 2024-08-13

はじめに

こんにちは、ユーゴです。今回は、量子画像処理シリーズ(?)です。前回の「【量子画像処理】実機の精度を上げたくて」もあわせてご覧ください。

目的

量子コンピュータで画像にブラーをかけたい。
【量子画像処理】実機の精度を上げたくて」で量子ビットにエンコードした画像の操作によって実現したい。

実装

今回は、こちらの論文を参考にしました。
Procedural generation using quantum computation

ちなみに、「量子コンピュータで画像処理してみた」で参考にした、「Investigating the usefuless of Quantum Blur」にも良い感じの方法が載っていました。しかし、私の読解力と実装力が不足していたため、こちらの方法は実装できませんでした。

概要

以下の手順で実装できます。

  1. 画像を量子ビットにエンコード
  2. 回転ゲート(Rx/Ry)を適用
  3. 量子ビットを画像にデコード

rotate_blur_circuit.png

コード

エンコード/デコードの基本的な実装はこちらのリポジトリにあります。
QuantumImageProcess

simulator.pyに、以下のようなコードがあります。

simulator.py
# 量子回路を作成
state_init = convert_probability2statevector(probabilities,address)
qc = create_QuantumCircuit_by_Statevector(state_init)
qc.measure(range(n_qubits),range(n_qubits))

これを以下のように書き換えます。

simulator.py
# 量子回路を作成
state_init = convert_probability2statevector(probabilities,address)
qc = create_QuantumCircuit_by_Statevector(state_init)

# 全ての量子ビットに、Rxゲートを適用
theta=np.pi*0.1
for i in range(n_qubits):
    qc.rx(theta,i)

qc.measure(range(n_qubits),range(n_qubits))

thetaはブラーの強さです。$2\pi$で1周するので、thetaは$0\le\theta<2\pi$の範囲となります。
また、今回はRxゲートを使用していますが、Ryでも似たような効果を得ることができます。

注意点

  • measureする前に回転ゲートを適用してください
  • 各量子ビットについて、Rxなら$|+\rangle, |-\rangle$、Ryなら$|i\rangle,|-i\rangle$の状態で、回転が作用しません

書き換えたら、simulator.pyのコードを全て実行しましょう。
今回は、$\theta=0〜\pi$を試します。

結果

元画像

 


$\theta=0$

(ノイズは量子ビットのエラーなので、ブラー効果は得ていません。)


$\theta=0.1\pi$


$\theta=0.25\pi$


$\theta=0.5\pi$


$\theta=0.75\pi$


$\theta=\pi$

 

評価

個人的には、$0<\theta\le0.25\pi$あたりが良かったと思います。

それ以外は、過剰な量子状態の回転操作により、本来の画像からかけ離れています。

 

まとめ

今回は、回転ゲートを用いた量子画像のブラー処理を紹介しました。また、ブラーのパラメータは$\theta$が$0.1\pi〜0.25\pi$付近で良い結果が得られると分かりました。

おわりに

いかがだったでしょうか。今回は、個人的に流行って欲しいと思っている量子画像処理で、ブラーの実装方法を紹介しました。
やはり私のモチベーションとしては、エンタメ領域への活用です。技術的には表現できるのに、ハードウェアの物理的制約で表現できない、といった勿体ないことを減らしていきたいです。(パーティクルや流体など)

このように、量子コンピューティングから、Unity, GAS, AWSなど、幅広いトピックを扱っています。
お役に立てましたら、いいね, フォロー等よろしくお願いします!

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0