<jupyter_start><jupyter_text>Q31 アフィン変換(スキュー)(1)アフィン変換を用いて、出力(1)のようなX-sharing(dx = 30)画像を作成せよ。(2)アフィン変換を用いて、出力2のようなY-sharing(dy = 30)画像を作成せよ。(3)アフィン変換を用いて、出力3のような幾何変換した(dx = 30, dy = 30)画像を作成せよ。このような画像はスキュー画像と呼ばれ、画像を斜め方向に伸ばした画像である。<jupyter_code>def skew_img(img,sx,sy):
    h,w,l = img.shape
    
    M = np.array([[1,sx/h,0],[sy/w,1,0]],dtype=np.float32)
    out = cv2.warpAffine(img,M,(w+sx,h+sy))
    return out

img = cv2.imread("imori.jpg")
sx = 30
sy = 30
result1 = skew_img(img,sx,0)
result2 = skew_img(img,0,sy)
result3 = skew_img(img,sx,sy)

plt.figure(facecolor="white",figsize=(10,3))
plt.subplot(1,4,1)
plt.imshow(cv2.cvtColor(img, cv2.COLOR_BGR2RGB))
plt.subplot(1,4,2)
plt.imshow(cv2.cvtColor(result1, cv2.COLOR_BGR2RGB))
plt.subplot(1,4,3)
plt.imshow(cv2.cvtColor(result2, cv2.COLOR_BGR2RGB))
plt.subplot(1,4,4)
plt.imshow(cv2.cvtColor(result3, cv2.COLOR_BGR2RGB))
plt.show()<jupyter_output><empty_output><jupyter_text>Q32. フーリエ変換二次元離散フーリエ変換(DFT)を実装し、imori.jpgをグレースケール化したものの周波数のパワースペクトルを表示せよ。 また、逆二次元離散フーリエ変換(IDFT)で画像を復元せよ。<jupyter_code>img = cv2.imread("imori_gray.jpg")

f = np.fft.fft2(img)
fshift = np.fft.fftshift(f)
magnitude_spectrum = 20*np.log(np.abs(fshift))

plt.subplot(121),plt.imshow(img, cmap = 'gray')
plt.title('Input Image'), plt.xticks([]), plt.yticks([])
plt.subplot(122),plt.imshow(magnitude_spectrum, cmap = 'gray')
plt.title('Magnitude Spectrum'), plt.xticks([]), plt.yticks([])
plt.show()
magnitude_spectrum<jupyter_output><empty_output>
{'fraction_non_alphanumeric': 0.18495934959349594, 'fraction_numerical': 0.0508130081300813, 'mean_word_length': 8.23125, 'pattern_counts': {'":': 0, '<': 9, '<?xml version=': 0, '>': 9, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'chain_length': '2', 'dir': 'jupyter-structured-clean-dedup', 'id': '490651', 'license': 'MIT', 'n_tokens_mistral': 879, 'n_tokens_neox': 826, 'n_words': 67, 'path': 'Question_31_40/.ipynb_checkpoints/MyAnswer-checkpoint.ipynb', 'repo_name': 'yudai0731/Gasyori100knock-1', 'size': '1476'}