実はあまり知られていませんが、 Code Interpreter を使用することで、多種多様な画像の編集ができます。
本記事では、これらの画像加工方法について、プロンプトと一緒に15個の手法をまとめていきます。
Code Interpreter の可能性はまだまだ知れ渡っていません。
今回の記事の知見をぜひGPTs制作に活かしていただければと思います。
それでは、早速みていきましょう!
1. 画像を分割する
画像を分割することができます。

縦に二つ、横に二つ、縦横で4つなど、いろんなバリエーションで可能です。
実際に分割された左画像:

2. 画像を結合する
分割が可能なら、当然、結合も可能です:


3. GIF 画像を作る
画像を複数渡すことで、それらをGIFにすることができます:

今回渡した画像は、アスペクト比があっていなかったため、2枚目がおかしくなってしまっています:

これを調整することも簡単です:

実際に修正した画像がこちら:

4. 画像を動画にする
GIF にすることが可能なら、動画もできちゃいます:

画像のサイズがあっていないなどのエラーが発生していますが、最終的には成功しています。
Code Interpreter はこのようにエラー時に自動的に自分で軌道修正することができる点が非常に優れています。
5. 拡張子を変換する
拡張子を変換します。私は webp を png にすることなどが多いです:

対応している変換可能な拡張子一覧はこちらです:
JPEG (.jpg, .jpeg)
PNG (.png)
GIF (.gif)
TIFF (.tiff, .tif)
BMP (.bmp)
ICO (.ico)
PCX (.pcx)
Portable Network Graphics (.png)
Portable Pixmap (.ppm)
Portable Bitmap (.pbm)
Portable Graymap (.pgm)
PDF (.pdf)
6. モザイク風画像にする
特定の画像をモザイク風にすることができます。

ダウンロードした画像がこちら:

7. 顔領域を特定する
OpenCV という画像処理専門のライブラリを活用することで、顔領域を検知できます:

この例では、3箇所で誤って検知されてしまっています。複雑な背景の場合はこのようなことが起こりえます。
フィードバックしてみましょう:

フィードバックをかけることで、2個に減りました。
実際のコードを見てみます:
eyes = face_cascade.detectMultiScale(face_roi, scaleFactor=1.1, minNeighbors=5, minSize=(5, 5), flags=cv2.CASCADE_SCALE_IMAGE)
if len(eyes) >= 1: # If eyes are detected within the ROI, we consider it a valid face
cv2.rectangle(image_rgb, (x, y), (x+w, y+h), (0, 255, 0), 2)目の数が1以上存在する場合のみ顔と判定するようにコードが変更されていました。
これを元々入れることで、精度が高くなります。
Code Interpreter の有効な使い方として、このようにフィードバックをなん度もかけた後で、最終的にいい結果が得られた時に、その際のコードを初めから GPT が記述できるように誘導することが肝心です。
8. 日本語を文字入れする
フォントを渡すことで、画像への日本語の文字入れが可能です。

このように、フォントサイズ、文字色など、いろんな項目が設定できます。
9. 画像のコントラストや明るさを調整する
画像のコントラストや明るさを調整して、視覚的に魅力的なものにすることができます:

10. 画像のノイズを除去する
ガウスノイズや塩胡椒ノイズなどの一般的なノイズを除去することができます。

他にも以下のようなフィルターが使えます:
ガウシアンブラー (Gaussian Blur): ガウシアンの重みを使用してピクセルを平均化し、画像を滑らかにする。ガウシアンノイズを減らすのに効果的です。
メディアンフィルタ (Median Filter): 各ピクセルをその近傍のピクセルの中央値で置き換えます。エッジを保持しながらソルトアンドペッパーノイズを除去するのに有効です。
バイラテラルフィルタ (Bilateral Filter): 空間的な近さと放射状の類似性(同じ強度や色)に基づいてピクセルを平均化し、エッジを鋭くしながらノイズを減らします。
ボックスフィルタ (Box Filter): カーネル(または「ボックス」)の下のピクセルを平均化して画像をぼかします。高周波ノイズを減少させるシンプルで速いフィルターです。
ソーベルフィルタ (Sobel Filter): エッジ検出に主に使用されます。ソーベルフィルタは各ピクセルでの画像の強度の勾配を計算するのに良い方法で、エッジを際立たせるのに適しています。
ラプラシアンフィルタ (Laplacian Filter): 画像のラプラシアンを計算し、エッジを強調します。
色々と遊んでみてください。
11. 特定の色相を強調する
カラー画像をグレースケールに変換する、または特定の色相を強調・変更するなど、任意の色調に変更することができます。

上記のダウンロード結果がこちらです:

12. 今日の日付を入れる
ChatGPTは今日の日付を理解しているため、今日の日付を画像に入れることが可能です:

python でと Code Interpreter を指定しているのは、指定なしだとDALL·E で文字入れしようとするためです。
出力された画像がこちら:

見にくいですが、右下に日付が入っています。
13. 画像を二値化する
二値化は、情報量を極限まで削減して01の白黒画像にすることです:

二値化された画像:

今回、単に「二値化してください」ではなく、「大津の方法で二値化してください」と依頼しています。
ChatGPTは基本的に楽をしようとするため、
より高度な方法を使って欲しい時は明示的に指示する必要があります。
高度な方法を知る一番いい方法は、それをChatGPTに尋ねることです。
例:

14. 画像を合成する
画像を他の画像に埋め込んだりすることができます:

作成された画像(右上にアイコンが合成されています):

15. 水平/垂直方向に反転する
画像を水平または垂直方向に反転させることができます:

続いて、この二つの画像をGIFにするといったフィードバックも可能です:

生成されたGIFがこちら:

いかがだったでしょうか?
Code Interpreter の魅力が伝わっていれば幸いです。
他にも Code Interpreter はまだまだいろんな可能性に満ち溢れているため、
これからも注目して研究していきます。







