컴퓨터 지식 네트워크 - 컴퓨터 프로그래밍 - 바이큐빅 보간 알고리즘의 원리와 Python에서의 구현과 같습니다.

바이큐빅 보간 알고리즘의 원리와 Python에서의 구현과 같습니다.

1. 이미지 쌍삼차 보간 알고리즘의 원리:

원본 이미지 A의 크기가 m*n이고, 크기가 조정된 대상 이미지 B의 크기가 M*N이라고 가정합니다. . 그런 다음 비율에 따라 A(x, y) = A( X*(m/M), Y*(n/N) )로 A에서 B(X, Y)의 해당 좌표를 얻을 수 있습니다. 이중선형 보간에서는 A(x, y)의 가장 가까운 4개 점을 선택합니다. 쌍삼차 보간법에서는 대상 영상 B(X, Y)의 픽셀 값을 계산하기 위한 매개변수로 가장 가까운 16개의 픽셀을 선택합니다. 그림과 같이:

그림과 같이 P점은 원본 이미지에 해당하는 (X, Y)에서 대상 이미지 B의 위치입니다. P의 좌표 위치는 소수 부분을 갖습니다. , 따라서 P의 좌표는 P(x u, y v)라고 가정합니다. 여기서 x와 y는 각각 정수 부분을 나타내고 u와 v는 각각 소수 부분을 나타냅니다. 그런 다음 그림에 표시된 대로 a(i, j)(i, j=0, 1, 2, 3)로 표시되는 최신 16픽셀의 위치를 ​​얻을 수 있습니다. ?

쌍삼차 보간법의 목적은 관계 또는 계수를 찾아 P의 픽셀 값에 대한 이러한 16개 픽셀의 영향 요소를 찾아 이 영향 요소를 기반으로 대상 이미지를 얻는 것입니다. 해당 지점의 픽셀 값은 이미지 스케일링의 목적을 달성합니다.

?

BiCubic 기반 함수의 형태는 다음과 같습니다.

2. Python에서 쌍삼차 보간 알고리즘 구현

from PIL import Image

import numpy as np

import math

# 서로 다른 가중치로 16픽셀 생성

def BiBubic(x):

x= abs( x)

xlt;=1인 경우:

1-2*(x**2) (x**3) 반환

elif xlt ;2 :

반환 4-8*x 5*(x**2)-(x**3)

else:

반환 0

# 쌍삼차 보간 알고리즘

# dstH는 대상 이미지의 높이, dstW는 대상 이미지의 너비

def BiCubic_interpolation(img, dstH, dstW ):

scrH, scrW, _=img.shape

#img=np.pad(img, ((1,3), (1,3), (0, 0)),' 상수')

retimg=np.zeros((dstH, dstW, 3), dtype=np.uint8)

범위(dstH)의 i에 대해:

범위(dstW)의 j에 대해:

scrx=i*(scrH/dstH)

scry=j*(scrW/dstW)

x =math.floor(scrx)

y=math.floor(scry)

u=scrx-x

v=scry- y

tmp=0

범위(-1, 2)에 있는 ii의 경우:

범위(-1, 2)에 있는 jj의 경우:

x iilt; 0 또는 y jjlt; =scrH 또는 y jjgt;

계속

tmp =img[x ii, y jj]*BiBubic( ii-u)*BiBubic(jj-v)

retimg[i, j]=np.clip(tmp, 0, 255)

retimg 반환

im_path='../paojie.jpg'

image=np.array(Image.open(im_path))

image2=BiCubic_interpolation(이미지, 이미지 .shape[0] *2, image.shape[1]*2)

image2=Image.fromarray(i

mage2.astype('uint8')).convert('RGB')

image2.save('BiCubic_interpolation.jpg')

3. 실험 결과:

4. 참고 내용:

? blogs.com/wojianxin/p/12516762.html

? /Ibelievesunshine/article/details/104942406

上篇: 뮤직 비디오는 SMB 프로토콜을 통해 컴퓨터와 TV 를 연결하는 방법을 보여줍니다. 下篇: 용에 관한 전설
관련 내용