#初めに(^ω^)
モザイクっていやですよね。ノイズっていやですよね…
ほんとは音響信号周りでやる予定だったものなんですが、画像のほうがウケがいいかなと思ってやってみました。思ったよりもクオリティ高い?!
#作成したソースコード
#---------------------------------------------------------
#ライブラリNumpyを用いた正規分布に基づくゴマ塩ノイズ付加処理と除去処理
#---------------------------------------------------------
import numpy as np
import cv2
#保存先指定
file = './text11.txt'
#カラーで読み込み
img = cv2.imread('./shigure.png')
#Numy配列に保存
im = np.array(img)
#画像サイズ取得
shape = im.shape
#1ピクセル事にノイズ付加処理
for x in range(shape[0]):
for y in range(shape[1]):
Count = 0
rand = np.random.randint(3)#乱数作成
print (rand)
if rand == 0:
for Count in range(3):
im[x][y][Count] = 0
if rand == 1:
for Count in range(3):
im[x][y][Count] = 255
#ノイズ付加画像出力
cv2.imwrite('./Add noise.png', im)
#ノイズ除去
median1 = cv2.medianBlur(im, ksize = 3)#1回目
median2 = cv2.medianBlur(median1, ksize = 3)#2回目
median3 = cv2.medianBlur(median2, ksize = 3)#3回目
median4 = cv2.medianBlur(median3, ksize = 3)#4回目
median5 = cv2.medianBlur(median4, ksize = 3)#5回目
median6 = cv2.medianBlur(median5, ksize = 3)#6回目
median7 = cv2.medianBlur(median6, ksize = 3)#7回目
median8 = cv2.medianBlur(median7, ksize = 3)#8回目
median9 = cv2.medianBlur(median8, ksize = 3)#9回目
median10 = cv2.medianBlur(median9, ksize = 3)#10回目
#ノイズ除去画像出力
cv2.imwrite('./Noise removal1.png', median1)#1回目のノイズ除去画像出力
cv2.imwrite('./Noise removal10.png', median10)#10回目のノイズ除去画像出力
##コード解説あれこれ
###ノイズ付加処理
#1ピクセル事にノイズ付加処理
for x in range(shape[0]):
for y in range(shape[1]):
Count = 0
rand = np.random.randint(3)#乱数作成
print (rand)
if rand == 0:
for Count in range(3):
im[x][y][Count] = 0
if rand == 1:
for Count in range(3):
im[x][y][Count] = 255
ノイズ付加処理に関しては、1ピクセルごとに乱数を用いてノイズを付加しています。その為には、1ピクセルごとに中身をほげふがしなければなりません。その為に2重forを用いてみました。x軸とy軸の関係性に注意しながら見てみてください!
###ノイズ除去処理
#ノイズ除去
median1 = cv2.medianBlur(im, ksize = 3)#1回目
median2 = cv2.medianBlur(median1, ksize = 3)#2回目
median3 = cv2.medianBlur(median2, ksize = 3)#3回目
median4 = cv2.medianBlur(median3, ksize = 3)#4回目
median5 = cv2.medianBlur(median4, ksize = 3)#5回目
median6 = cv2.medianBlur(median5, ksize = 3)#6回目
median7 = cv2.medianBlur(median6, ksize = 3)#7回目
median8 = cv2.medianBlur(median7, ksize = 3)#8回目
median9 = cv2.medianBlur(median8, ksize = 3)#9回目
median10 = cv2.medianBlur(median9, ksize = 3)#10回目
#ノイズ除去画像出力
cv2.imwrite('Noise removal1.png', median1)#1回目のノイズ除去画像出力
cv2.imwrite('Noise removal10.png', median10)#10回目のノイズ除去画像出力
#参考文献
たぶんないなぁ
#目次のようなもの
Re:ゼロから始める機械学習生活(深層学習もあるよ)
ここに進捗状況等を載せてます。
今まで書いたものを一覧にしていたりするので見てみてください!