图像像素插值算法(初步分析)(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)
版权声明:本站【趣百科】文章素材来源于网络或者用户投稿,未经许可不得用于商用,如转载保留本文链接:https://www.qubaik.com/answer/89104.html