欠点画像の画像処理と指標化について
Q&A
欠点の指標化
下記の画像で中央やや左側の縦線が欠点なのですが、こちらを抽出して数値化し欠点判定を行いたいです。
全体的に汚れのようなノイズがあるので、これらを消去したい。
縦線の欠点には影響を及ぼさないで、ノイズを消去する一番効果のある方法をご教示いただきたいです。
また全体を通して、お勧めの処理方法をご教示いただきたいです。
発生している問題・エラー
現在はコントラストを単純にグラフ化しておりますが、どう改善したらよいか苦悩しております。
該当するソースコード
from PIL import Image
import matplotlib.pyplot as plt
def calculate_contrast(column_pixels):
return max(column_pixels) - min(column_pixels)
def plot_contrast_graph(column_contrasts, label):
plt.plot(column_contrasts, label=label)
def main():
# 画像の読み込み
image_path = '1.jpg' # 画像のパスを指定
image = Image.open(image_path)
# 上から10ピクセル目から50ピクセル目までの全幅方向のコントラストを計算
width, height = image.size
pixels = list(image.getdata())
start_indexes = [10 * width, 20 * width, 30 * width, 40 * width, 50 * width]
end_indexes = [(10 + 1) * width, (20 + 1) * width, (30 + 1) * width, (40 + 1) * width, (50 + 1) * width]
column_contrasts = [[] for _ in range(len(start_indexes))]
for i, (start_index, end_index) in enumerate(zip(start_indexes, end_indexes)):
for j in range(start_index, end_index):
column_pixels = [pixels[k][0] for k in range(j, len(pixels), width)]
contrast = calculate_contrast(column_pixels)
column_contrasts[i].append(contrast)
label = f'{(i + 1) * 10}th pixel'
plot_contrast_graph(column_contrasts[i], label=label)
# グラフを作成して表示
plt.xlabel('Width')
plt.ylabel('Contrast')
plt.title('Contrast across Width')
plt.legend()
plt.show()
if __name__ == '__main__':
main()
0