부식 관찰 자동화 프로그램 개발(2/2)
https://www.pyimagesearch.com/2018/12/17/image-stitching-with-opencv-and-python/
Image Stitching with OpenCV and Python - PyImageSearch In this tutorial you will learn how to perform multiple image stitching using Python, OpenCV, and the cv2.createSticher and cv2.Stitcher_create functions. In this tutorial you will learn how to perform multiple image stitching using Python, OpenCV, and the cv2.createSticher and cv2.Stitcher_create functions.
오늘은 이미지 스티칭. 하게된 계기는 500배, 1000 배율 광학현미경(최대 15만원 비용) 으로 연속적인 탄소강 표면을 촬영한 영상을 통해 파노라마(panorama) 꼴의 이미지를 만들어 한번에 부식을 관찰할 수 있지 않을까 하는 아이디어에서 나왔다. “영상을 파노라마 이미지로, 파이썬” 으로 검색을 해 보았지만 결론은 영상에서 프레임을 따서 이미지로 만든 후 그 이미지들을 대상으로 스티칭을 해서 큰 파노라마 이미지로 만들어주는, 두 단계를 거쳐야 겠구나 하는 결론이었다. 오늘은 스티칭을 따라해 보았다. 아래는 참고한 홈페이지의 예제 이미지이다.
바로 위의 완성 이미지는 stitching 후에 crop까지 하여, 이미지가 잘리는것을 감수하며 사각형(rec)형태의 이미지로 만들어 준 것이다.
아래는 내가 시험해 본 FE-SEM 이미지이다.
아래 코드를 작성하여 작은 이미지 여러개로 만들었다.
————–사용할 이미지 만들기—————— import cv2
image =cv2.imread(“./images/ex.BMP”) h, w = image.shape[:2] print(h,w) h1=[] h2=[] w1=[] w2=[] h1=[0,round(0.1h),round(0.1h),round(0.2h)] h2=[0,round(0.7h),round(0.73h),round(0.8h)] w1=[0,round(0.0w),round(0.2w),round(0.5w)] w2=[0,round(0.3w),round(0.7w),round(1.0w)] print(h1,h2,w1,w2) #print(h1, h2, w2)
for i in range(1,4): if i images= image[h1[i]:h2[i],w1[i]:w2[i]] name=“test”+str(i)+”.PNG” cv2.imshow(name,images) cv2.waitKey(0) print(name)
cv2.imshow(name,image) cv2.imwrite(“./images/”+name,image) else: cv2.waitKey(0) break cv2.destroyAllWindows() —————————————
이 세 개의 이미지에 대하여 image-stitching-simple.py 를 실행하여 아래와 같이 나왔다.
image-stitching.py 를 실행하여는 아래와 같이 나왔다. 이는 보기 좋은 사각형 내의 이미지만 잘라낸 것이다.
위의 두 결과에서 아래의 경우는 상당 부분의 데이터를 잘라버리는 단점 때문에 오히려 거칠지만 심플한 처리인 위의 경우를 선호하게 되었다.
그런데 제공 코드의 결과로 나온 이미지가 더 흐려진 것을 확인했다.
위의 왼쪽이 원본, 오른쪽이 stitching(접합) 코드 이후의 결과이다. 원본보다 처리 후가 더 흐릿하다. 따라서 아래와 같이 sharping 처리를 추가하였고, 결과는 만족스럽다.
————–sharpening 출처 : https://mellowlee.tistory.com/entry/OpenCV-Sharpening————–
[OpenCV] Sharpening Sharpening 목적 1.영상을 선명하게 edge검출 kernel = np.array([[1,1,1],[1,-8,1],[1,1,1]]) dst = cv2.filter2D(src, -1, kernel) 응용 src = cv2.imread(‘circle.png’) # edge를 선명하게 함 dst0 = cv2.Gauss.. Sharpening 목적 1.영상을 선명하게 edge검출 kernel = np.array([[1,1,1],[1,-8,1],[1,1,1]]) dst = cv2.filter2D(src, -1, kernel) 응용 src = cv2.imread(‘circle.png’) # edge를 선명하게 함 dst0 = cv2.Gauss..
—————————아래 코드는 stitching코드에 sharpening 코드 추가——————————
USAGE
python image_stitching_simple.py –images images/test –stitched images/test/stitched.BMP –s_stitched images/test/s_stitched.BMP
import the necessary packages
from imutils import paths import numpy as np import argparse import imutils import cv2
construct the argument parser and parse the arguments
ap = argparse.ArgumentParser() ap.add_argument(“-i”, “–images”, type=str, required=True, help=“path to input directory of images to stitch”) ap.add_argument(“-o1”, “–stitched”, type=str, required=True, help=“path to the stitched image”) ap.add_argument(“-o2”, “–s_stitched”, type=str, required=True, help=“path to the sharpened(edge enhenced)_stitched image”) args = vars(ap.parse_args())
grab the paths to the input images and initialize our images list
print(“[INFO] loading images…”) imagePaths = sorted(list(paths.list_images(args[“images”]))) images = []
loop over the image paths, load each one, and add them to our
images to stich list
for imagePath in imagePaths: image = cv2.imread(imagePath) images.append(image)
initialize OpenCV's image sticher object and then perform the image
stitching
print(“[INFO] stitching images…”) stitcher = cv2.createStitcher() if imutils.is_cv3() else cv2.Stitcher_create() (status, stitched) = stitcher.stitch(images)
#내가 추가한 sharpening(edge enhenced) kernel_sharpen_3 = np.array([[-1,-1,-1,-1,-1],[-1,2,2,2,-1],[-1,2,8,2,-1],[-1,2,2,2,-1],[-1,-1,-1,-1,-1]])/8.0 output_3 = cv2.filter2D(stitched,-1,kernel_sharpen_3) cv2.imshow('Edge Enhancement',output_3)
if the status is '0', then OpenCV successfully performed image
stitching
if status == 0:
write the output stitched image to disk
cv2.imwrite(args[“stitched”], stitched) cv2.imwrite(args[“s_stitched”], output_3)
display the output stitched image to our screen
cv2.imshow(“Stitched”, stitched) cv2.imshow(“S-Stitched”, output_3) cv2.waitKey(0)
otherwise the stitching failed, likely due to not enough keypoints)
being detected
else: print(“[INFO] image stitching failed ({})”.format(status)) ——————————————————— 아래 이미지는 좌우 1280원본 사이즈에 맞추어 crop하고 실행한 결과이다. 오른쪽의 sharpened된 경우 stitch를 거쳐 흐릿해진 이미지가 다시 쓸 만해졌다.
다음: 영상의 프레임을 연속적으로 캡처해내는 코드 다음: 12만원짜리 광학현미경..? http://shopping.interpark.com/product/productInfo.do?prdNo=6502732298&gclid=EAIaIQobChMI6_v8wbuu4wIVyGkqCh2vIQNTEAYYBiABEgJMqvD_BwE
광학 디지털 현미경 광학 800x/1300x/디지털 1300x 광학 디지털 현미경 광학 800x/1300x/디지털 1300x 광학 디지털 현미경 광학 800x/1300x/디지털 1300x
BB739 현미경 디지털 전자 광학 USB 생물 600배고배율 - 11번가 상품이미지에 마우스를 오버하시면 확대이미지가 제공됩니다. 상품리뷰 0건 찜 0 공유 상품가격정보 정상가 114,000 원 SK pay point 리뷰 작성시 최대 50P 추가 적립 [광고]이달의 혜택: 쿠폰 1장 바로받기 무이자 할부 최대 22 개월 카드할인혜택 배송비 : 2,500원 (300,000원 이상 무료) 도서산간배송비 추가 배송비정보 더보기 묶음배송 상품 더보기 택배사 : 우체국택배/등기 택배사 안내 원산지 : 해외- 아시아/중국 수량 수량감소 수량증가 적용가능쿠폰 쿠폰적용 총 합계금액(수량) 114,000 원( 1 개)… 상품이미지에 마우스를 오버하시면 확대이미지가 제공됩니다. 상품리뷰 0건 찜 0 공유 상품가격정보 정상가 114,000 원 SK pay point 리뷰 작성시 최대 50P 추가 적립 [광고]이달의 혜택: 쿠폰 1장 바로받기 무이자 할부 최대 22 개월 카드할인혜택 배송비 : 2,500원 (300,000원 이상 무료) 도서산간배송비 추가 배송비정보 더보기 묶음배송 상품 더보기 택배사 : 우체국택배/등기 택배사 안내 원산지 : 해외- 아시아/중국 수량 수량감소 수량증가 적용가능쿠폰 쿠폰적용 총 합계금액(수량) 114,000 원( 1 개)…
1000배 전문가용 전자현미경 알루미늄합금 500만화소 - 11번가 상품가격정보 정상가 169,000 원 SK pay point 리뷰 작성시 최대 100P 추가 적립 [광고] 할인가능쿠폰 : 1건 [받기] 무이자 할부 최대 22 개월 카드할인혜택 중국배송 배송비 : 무료 원산지 : 해외- 아시아/중국 상품 선택하세요 상품 01. 1000배 전문가용 전자현미경 알루미늄합금 500만화소 수량감소 수량증가 169,000 원 취소 적용가능쿠폰 쿠폰적용 총 합계금액(수량) 169,000 원( 1 개) 장바구니 담기 구매하기 상품 정보 테이블 상품상태 새상품 상품번호 2334646827 배송방법 (해외항공배송… 상품가격정보 정상가 169,000 원 SK pay point 리뷰 작성시 최대 100P 추가 적립 [광고] 할인가능쿠폰 : 1건 [받기] 무이자 할부 최대 22 개월 카드할인혜택 중국배송 배송비 : 무료 원산지 : 해외- 아시아/중국 상품 선택하세요 상품 01. 1000배 전문가용 전자현미경 알루미늄합금 500만화소 수량감소 수량증가 169,000 원 취소 적용가능쿠폰 쿠폰적용 총 합계금액(수량) 169,000 원( 1 개) 장바구니 담기 구매하기 상품 정보 테이블 상품상태 새상품 상품번호 2334646827 배송방법 (해외항공배송…
CVMV-K39 800X 현미경 피부관리 두피관리 모발관리 광학현미경 생물현미경 디지털현미 - 11번가 상품가격정보 정상가 51,400 원 판매가 50,890 원 SK pay point 2,050P 적립 리뷰 작성시 최대 50P 추가 적립 100개 이상 구매시 개당 1 % 할인 [광고] 할인가능쿠폰 : 1건 [받기] 무이자 할부 최대 22 개월 카드할인혜택 배송비 : 무료 도서산간배송비 추가 배송비정보 더보기 택배사 : CJ대한통운 택배사 안내 원산지 : 각 상품별 원산지는 상세설명 참조 사은품 : 상세설명참조 희망후원금 : 110 원 수량 수량감소 수량증가 적용가능쿠폰 510원 쿠폰자동적용 쿠폰적용 총 합계금액(수량) 50,890 … 상품가격정보 정상가 51,400 원 판매가 50,890 원 SK pay point 2,050P 적립 리뷰 작성시 최대 50P 추가 적립 100개 이상 구매시 개당 1 % 할인 [광고] 할인가능쿠폰 : 1건 [받기] 무이자 할부 최대 22 개월 카드할인혜택 배송비 : 무료 도서산간배송비 추가 배송비정보 더보기 택배사 : CJ대한통운 택배사 안내 원산지 : 각 상품별 원산지는 상세설명 참조 사은품 : 상세설명참조 희망후원금 : 110 원 수량 수량감소 수량증가 적용가능쿠폰 510원 쿠폰자동적용 쿠폰적용 총 합계금액(수량) 50,890 …
정말 이 배율들이 사실인가?
히히.. 자비로 사고 싶을 정도로 재밌게 생겼다. 500배 된다는 것은 확실하겠지? ㅎㅎ












