CodeGym /コース /Python SELF JA /視覚的なフィルターとエフェクトの適用:明るさ、コントラスト、色の変更

視覚的なフィルターとエフェクトの適用:明るさ、コントラスト、色の変更

Python SELF JA
レベル 48 , レッスン 1
使用可能

1. ビジュアルエフェクト

ビジュアルエフェクトの紹介

今日は、明るさやコントラストを変えるだけでなく、あなたの作品に特別なスタイルを加える方法も学ぼう!古いスマホで撮影した動画でも、ハリウッド映画並みに仕上げたり、ただ視聴しやすくするためのテクニックだよ。

動画編集では、視覚エフェクトをどう活用するかがコンテンツ作成の秘訣。視覚エフェクトを使えば、動画をもっと鮮やかにしたり、重要なディテールを強調したり、全体のスタイルを変えたりすることができるよ。

明るさ、コントラスト、色の基本

実践に入る前に、まず明るさ、コントラスト、色の意味をおさらいしよう!

  • 明るさ — 画像の全体的な明るさや暗さ。明るさを上げると動画は明るくなり、下げると暗くなる。
  • コントラスト — 動画内の最も明るい部分と最も暗い部分との差。コントラストが高いと動画は鮮やかに、低いとフラットに見える。
  • 色補正 — 動画の色バランスを調整してクオリティを向上させるプロセス。

2. 動画の明るさを変更

では、コードを書いてMoviePyを使ってこれらのエフェクトをどう適用するか見てみよう!

fl_image()メソッドを使った明るさ変更

fl_imageメソッドを使えば、カスタム関数を動画の各フレームに適用して明るさを変更できるよ。たとえば明るさを20%上げたいなら、倍率を1.2に設定すると良い。

Python

from moviepy.editor import VideoFileClip

# 明るさを変更する関数
def change_brightness(image, factor=1.2):
    return image * factor

# 動画ファイルを開く
clip = VideoFileClip("video.mp4")

# 明るさを変更
brightened_clip = clip.fl_image(lambda frame: change_brightness(frame, 1.2))

# 結果を保存
brightened_clip.write_videofile("brightened_video.mp4")

moviepy.video.fx.allを使った明るさ変更

また、lum_contrastエフェクトを使用して、動画の明るさを調整することも可能!

動画の明るさを増加させる

Python

from moviepy.editor import VideoFileClip
from moviepy.video.fx.all import lum_contrast

# 動画をロード
video = VideoFileClip("sample_video.mp4")

# 明るさを増加させるエフェクトを適用
bright_video = lum_contrast(video, lum=30)  # 明るさを30単位増加

# 結果を保存
bright_video.write_videofile("bright_video.mp4")

この例では:

  • lum_contrast(video, lum=30)で明るさを30単位増加。この明るさの値は、プラスで増加、マイナスで減少。

動画の明るさを減少させる

Python

# 明るさを減少させるエフェクトを適用
dark_video = lum_contrast(video, lum=-30)  # 明るさを30単位減少

# 結果を保存
dark_video.write_videofile("dark_video.mp4")

3. 動画のコントラストを変更

動画のコントラストは、明るい部分と暗い部分の明るさや鮮やかさに影響する。コントラストを上げると明るい部分はより明るく、暗い部分はより暗くなる。一方、コントラストを下げると明るい部分と暗い部分の差が小さくなる。

fl_image()メソッドを使ったコントラスト変更

コントラストも同様に画像変換関数を使って調整できるよ。以下に例を示すね:

Python

import numpy as np

# コントラストを変更する関数
def change_contrast(image, factor=1.5):
    mean = np.mean(image)
    return (image - mean) * factor + mean

# コントラストを変更
contrasted_clip = clip.fl_image(lambda frame: change_contrast(frame, 1.5))

# 結果を保存
contrasted_clip.write_videofile("contrasted_video.mp4")

lum_contrast()メソッドを使ったコントラスト変更

コントラストを上げる

Python

# コントラストを上げる
high_contrast_video = lum_contrast(video, contrast=1.5)  # コントラストを50%増加

# 結果を保存
high_contrast_video.write_videofile("high_contrast_video.mp4")

ここでは:

  • contrast = 1.5でコントラストを50%増加。1より大きい値を指定して増加できる。

コントラストを下げる

Python

# コントラストを下げる
low_contrast_video = lum_contrast(video, contrast=0.5)  # コントラストを50%減少

# 結果を保存
low_contrast_video.write_videofile("low_contrast_video.mp4")

ここでは:

  • contrast = 0.5でコントラストを50%減少。1未満の値を指定するとコントラストを下げられる。

4. 動画の色特性を変更

MoviePyは、色調の変更、白黒モードへの変換、その他の色エフェクトの適用を可能にするツールも提供しているよ。

fl_image()メソッドを使った色補正

色補正には、rgb_color関数を使って動画のカラーパレットを変換することで達成できる。

Python

def adjust_color(image, factor=0.8):
    return image * np.array([1, factor, factor])  # 緑と青チャンネルを減少

# 色補正を適用
color_corrected_clip = clip.fl_image(lambda frame: adjust_color(frame, 0.8))

# 結果を保存
color_corrected_clip.write_videofile("color_corrected_video.mp4")

moviepy.video.fx.allを使った色調整

動画を白黒モードに変換

動画を白黒にするには、fxメソッドのblackwhite関数を使ってね!

Python

from moviepy.video.fx.all import blackwhite

# 動画を白黒変換
bw_video = blackwhite(video)

# 結果を保存
bw_video.write_videofile("black_and_white_video.mp4")

ここでは:

  • blackwhite(video)で動画をグレースケールに変換。

動画の色を反転

MoviePyでは色を反転させるエフェクトも利用可能!ドラマチックな効果やアート的なエフェクトを作るために使えるよ。

Python

from moviepy.video.fx.all import invert_colors

# 色を反転
inverted_video = invert_colors(video)

# 結果を保存
inverted_video.write_videofile("inverted_video.mp4")

ここでは:

  • invert_colors(video)は動画内の全ての色を反転、ネガティブ効果を生成。

5. フィルターの適用

セピア効果を作るための色フィルターの適用

セピア効果(暖かい茶色の色調を付ける効果)を作るには、動画にフィルターを適用するだけ!MoviePyでは色チャンネルを手動で調整してこれを実現。

セピア効果を作成

Python

from moviepy.video.fx.all import colorx

# セピア効果を適用(青と緑チャンネルを減少)
sepia_video = colorx(video, 0.9)

# 結果を保存
sepia_video.write_videofile("sepia_video.mp4")

この例では:

  • colorx(video, 0.9)で色の彩度を減少。他のエフェクトと組み合わせて暖色効果を加えることも可能!

カスタムフィルターの使用

自分だけのユニークな色効果が必要な場合には、MoviePyでカスタムフィルターを書くことができる。そのフィルターは動画の各フレームに適用されるんだ。

赤チャンネルを強化するカスタムフィルターの作成

Python

import numpy as np

# 赤チャンネルを強化するカスタム関数
def enhance_red(image):
    image[:, :, 0] = np.clip(image[:, :, 0] * 1.5, 0, 255)  # 赤チャンネルを強化
    return image

# カスタムフィルターを適用
red_video = video.fl_image(enhance_red)

# 結果を保存
red_video.write_videofile("enhanced_red_video.mp4")

この例では:

  • enhance_red(image)関数が画像の赤チャンネルを強化し、より鮮やかにする。
  • fl_image()がこの関数を動画の各フレームに適用し、赤チャンネルを増強する効果を作る。

課題と解決策

動画を鮮やかにするのは簡単そうに見えるけど、実際にはちょっとした問題がある。例えば、明るさを上げすぎると明るい部分のディテールが失われたり、コントラストを強くしすぎると動画が「ノイジー」に見えることも。これらの変更は慎重に適用して、短い動画の断片で結果を確認しながら進めよう!

さらに、パフォーマンスも考慮しよう。各フレームを変更するプロセスはリソースを消費するから、実験中は動画が長すぎないように注意してね。

コメント
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION