import cv2
import numpy as np
# 画像の読み込み
image = cv2.imread('source.bmp')
# 100個のノイズを追加する
for i in range(100):
# ランダムな位置にノイズを追加
x = np.random.randint(0, image.shape[1])
y = np.random.randint(0, image.shape[0])
# 指定した位置の明度を反転させる
image[y, x] = 255 - image[y, x]
# 画像の保存
cv2.imwrite('1.bmp', image)
1
import cv2
import numpy as np
# 膨張処理した画像を返す
def dilate_image(image):
kernel = np.array([[0, 1, 0], [1, 1, 1], [0, 1, 0]], np.uint8)
dilated_image = cv2.dilate(image, kernel, iterations=1)
return dilated_image
# 収縮処理した画像を返す
def erode_image(image):
# 画像を白黒反転させる
image = cv2.bitwise_not(image)
# 膨張処理
image = dilate_image(image)
# 画像を白黒反転させる
image = cv2.bitwise_not(image)
return image
# 画像の読み込み
image = cv2.imread('1.bmp')
# 画像の膨張処理
image1 = dilate_image(image)
# 画像の収縮処理
image2 = erode_image(image)
# 画像の保存
cv2.imwrite('2_1.bmp', image1)
cv2.imwrite('2_2.bmp', image2)
2_1

2_2
import cv2
import numpy as np
# 膨張処理した画像を返す
def dilate_image(image):
kernel = np.array([[0, 1, 0], [1, 1, 1], [0, 1, 0]], np.uint8)
dilated_image = cv2.dilate(image, kernel, iterations=1)
return dilated_image
# 収縮処理した画像を返す
def erode_image(image):
# 画像を白黒反転させる
image = cv2.bitwise_not(image)
# 膨張処理
image = dilate_image(image)
# 画像を白黒反転させる
image = cv2.bitwise_not(image)
return image
# 画像の読み込み
image = cv2.imread('1.bmp')
# オープニング (収縮→膨張)
image1 = erode_image(image)
image1 = dilate_image(image1)
# クロージング (膨張→収縮)
image2 = dilate_image(image)
image2 = erode_image(image2)
# 画像の保存
cv2.imwrite('3_1.bmp', image1)
cv2.imwrite('3_2.bmp', image2)
3_1

3_2
import cv2
import numpy as np
image = cv2.imread('1.bmp') # ノイズ画像
image_opened = cv2.imread('3_1.bmp') # オープニング画像
image_closed = cv2.imread('3_2.bmp') # クロージング画像
# トップハット (ノイズ画像 - オープニング画像)の絶対値
image_tophat = cv2.absdiff(image, image_opened)
# ブラックハット (クロージング画像 - ノイズ画像)の絶対値
image_blackhat = cv2.absdiff(image_closed, image)
# 画像を保存する
cv2.imwrite('4_1.bmp', image_tophat)
cv2.imwrite('4_2.bmp', image_blackhat)
-------------------------------
import cv2
import numpy as np
image = cv2.imread('1.bmp') # ノイズ画像
image_opened = cv2.imread('3_1.bmp') # オープニング画像
image_closed = cv2.imread('3_2.bmp') # クロージング画像
# トップハット (ノイズ画像 - オープニング画像)の絶対値
image_tophat = cv2.absdiff(image, image_opened)
# ブラックハット (クロージング画像 - ノイズ画像)の絶対値
image_blackhat = cv2.absdiff(image_closed, image)
# 画像を保存する
cv2.imwrite('4_1.bmp', image_tophat)
cv2.imwrite('4_2.bmp', image_blackhat)
4_1

4_2