Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
1
Help us understand the problem. What is going on with this article?
@MuAuan

【画像合成】OpenCVで元絵とGuided_BackPropagationの画像合成♪

More than 1 year has passed since last update.

このところ、Grad_camをいろいろ試しているが、そこで大活躍なツール、画像合成の記事を書いておこうと思う。

以前、以下の記事で取り上げた。
【画像合成】OpenCVで積算によりノイズ除去をやってみた♪
【参考】
Arithmetic Operations on Images@OpenCV

コードは以下のとおり

img1とimg2を入力キーの割合で合成します。6以外の時の合成画像はおまけに置きました。

import cv2
import matplotlib.pyplot as plt

img1 = cv2.imread('total_test_image1_g6.jpg')
#img2 = cv2.imread('total_test_gradcam_g6.jpg')
img2 = cv2.imread('total_test_guided_g6.jpg')

rows,cols,channels = img2.shape
roi = img1[0:rows, 0:cols ]
cv2.imshow('org1',img1)
cv2.imshow('org2',img2)
cv2.waitKey(0)
cv2.destroyAllWindows()
a =1
k=0
while True:
    dst = cv2.addWeighted(img2,a,roi,1-a,0)
    cv2.imshow('dst',dst)
    k=cv2.waitKey(0)&0xff
    if k ==ord('q'):
        cv2.imwrite('results'+str(a)+'.jpg',dst)
        break
    elif k ==ord('1'):
        a = 0.1        
    elif k ==ord('2'):
        a = 0.2
    elif k ==ord('3'):
        a = 0.3
    elif k ==ord('4'):
        a = 0.4
    elif k ==ord('5'):
        a = 0.5    
    elif k ==ord('6'):
        a = 0.6
    elif k ==ord('7'):
        a = 0.7
    elif k ==ord('8'):
        a = 0.8
    elif k ==ord('9'):
        a = 0.9
    elif k ==ord('0'):
        a = 1        
cv2.destroyAllWindows()

結果

キーを1~10まで変えると以下のとおりになりました。
以下はキーが6を押したときのものです。
results0.6.jpg

画素の積(bitwise_and)

import cv2
import matplotlib.pyplot as plt

img1 = cv2.imread('total_test_image1_g6.jpg')
#img2 = cv2.imread('total_test_gradcam_g6.jpg')
img2 = cv2.imread('total_test_guided_g6.jpg')

rows,cols,channels = img2.shape
roi = img1[0:rows, 0:cols ]
cv2.imshow('org1',img1)
cv2.imshow('org2',img2)
cv2.waitKey(0)
cv2.destroyAllWindows()
a =1
k=0
while True:
    dst = cv2.bitwise_and(img2*a,roi*(1-a))  #,mask = mask_inv)
    #dst = cv2.addWeighted(img2,a,roi,1-a,0)
    cv2.imshow('dst',dst)
    k=cv2.waitKey(0)&0xff
    if k ==ord('q'):
        plt.imshow(dst)
        #cv2.imwrite('results_multiply'+str(a)+'.jpg',dst)
        plt.savefig('results_multiply'+str(a)+'.jpg')
        plt.pause(1)
        plt.close()
        break
    elif k ==ord('1'):
        a = 0.1        
    elif k ==ord('2'):
        a = 0.2
    elif k ==ord('3'):
        a = 0.3
    elif k ==ord('4'):
        a = 0.4
    elif k ==ord('5'):
        a = 0.5    
    elif k ==ord('6'):
        a = 0.6
    elif k ==ord('7'):
        a = 0.7
    elif k ==ord('8'):
        a = 0.8
    elif k ==ord('9'):
        a = 0.9
    elif k ==ord('g'):
        a = 0.95
    elif k ==ord('0'):
        a = 1        
cv2.destroyAllWindows()

結果

枠が協調されいて、また画像がもう一つだが、一応出来たようです。

results_multiply0.2.jpg

results_multiply0.9.jpg

results_multiply0.95.jpg

まとめ

・どの程度の比で合成するか迷ってましたが、簡単に合成できました
・画素の積は完成度低いですが、まあここから一工夫で使えそうです

・本論はも少し実験重ねてから、次回まとめます

おまけ


results0.1.jpg

results0.2.jpg

results0.3.jpg

results0.4.jpg

results0.5.jpg

results0.7.jpg

results0.8.jpg

results0.9.jpg

1
Help us understand the problem. What is going on with this article?
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
MuAuan
2021年為になる記事にする 記事420いいね2000フォロワー200 2020年;いい記事を書く 記事359/350いいね1590/1500フォロワ ー144/150 2019年 記事275/300いいね1035/1000フォロワー97/100 2018年 記事140/200いいね423/500フォロワー48/50 7/8/2018 記事90いいね227フォロワー25

Comments

No comments
Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account Login
1
Help us understand the problem. What is going on with this article?