您的位置首页百科问答

图像像素插值算法(初步分析)(python)

图像像素插值算法(初步分析)(python)

的有关信息介绍如下:

图像像素插值算法(初步分析)(python)

在正向图像变形的过程中,得到的新图像的一些像素可能是黑色(无色),这时候,就需要用插值的方法,给图像无色的地方加上颜色。

本文,用python初步探索插值算法。

给出如下图片。

我用python处理图片变形,得到下面的图片。

import matplotlib.image as pm

from numpy import *

p='D:/HintSoft/Hint-W7/Desktop/photo/0.jpeg'

a=pm.imread(p)

c=a*0

u,v,w=c.shape

for i in range(u):

for j in range(v):

c[abs(int(i+2*j))%u,abs(int(j+2*i))%v]=a[i,j]

pm.imsave('D:/HintSoft/Hint-W7/Desktop/photo/00.png',c)

用读图器放大图片,可以看到很多黑色像素,这些像素的像素值其实是[0,0,0]。

用python对图像进行插值处理:

for i in range(1,u-1):

for j in range(1,v-1):

c[i,j]=(c[i,j-1]*0.5+c[i,j+1]*0.1+c[i-1,j]*0.1+c[i+1,j]*0.1)

pm.imsave('D:/HintSoft/Hint-W7/Desktop/photo/0.png',c*6)

图像如下。

用读图器放大图片,可以发现,黑色像素被别的颜色代替了。

如果进行这样的处理:

for i in range(1,u-1):

for j in range(1,v-1):

c[i,j]=(c[i,j-1]*0.5+c[i,j+1]*0.1+c[i-1,j]*0.5+c[i+1,j]*0.1)

pm.imsave('D:/HintSoft/Hint-W7/Desktop/photo/0.png',c*6)

下面是按比例缩小之后的图片。

for i in range(1,u-1):

for j in range(1,v-1):

c[i,j]=(c[i,j-1]+c[i,j+1]+c[i-1,j]+c[i+1,j])/4

pm.imsave('D:/HintSoft/Hint-W7/Desktop/photo/0.png',c*6)

只处理黑色像素:

for i in range(1,u-1):

for j in range(1,v-1):

if c[i,j,0]==0 and c[i,j,1]==0 and c[i,j,2]==0:

c[i,j]=(c[i,j-1]+c[i,j+1]+c[i-1,j]+c[i+1,j])/4

pm.imsave('D:/HintSoft/Hint-W7/Desktop/photo/0.png',c*6)

用黑色像素左右两边的像素来确定颜色:

for i in range(1,u-1):

for j in range(1,v-1):

if c[i,j,0]==0 and c[i,j,1]==0 and c[i,j,2]==0:

c[i,j]=(c[i-1,j]*0.7+c[i+1,j]*0.3)

pm.imsave('D:/HintSoft/Hint-W7/Desktop/photo/0.png',c)