双线性插值原理及实现
创作时间:
作者:
@小白创作中心
双线性插值原理及实现
引用
1
来源
1.
https://ithelp.ithome.com.tw/articles/10293629
我们在上一篇提到当影像放大或缩小时等同于映射到另一個函數,新函數(影像)的定義域裡每個點(像素)都會對應到原始函數的某處。
org_x = new_x * (org_width/new_width)
org_y = new_y * (org_height/new_height)
當3x3的影像F(x, y)放大為4x4的影像Q(x, y)時,Q(1, 2)對應到F(x=1(3/4), y=2(3/4)) = F(0.75, 1.5),最近鄰插值會直接取F(1, 2)的值代入F(0.75, 1.5)。但是這個方法並不聰明,因為F(0.75, 1.5)周圍有4個像素(DEGH),考量這4個像素加權的影響一定會比單考慮最接近的1個像素來得合理。
我們可以用線性插值(Linear interpolation)來推算兩點之間任一點的值,假設F(x, y)周圍的4個像素為F(x0, y0),F(x0, y1),F(x1, y0)及F(x1, y1)
先計算兩次線性插值得到F(x, y0)及F(x, y1)
F(x, y0) = F(x0, y0) * (x1-x) + (x1, y0) * (x-x0)
F(x, y1) = F(x0, y1) * (x1-x) + (x1, y1) * (x-x0)
再透過F(x, y0)及F(x, y1)線性插值得到F(x, y)
F(x, y) = F(x, y0) * (y1-y) + F(x, y1) * (y-y0)
雙線性插值就是透過運行上述3次線性插值所構成的方法。
def bilinear(org, new_shape):
org_height, org_width = org.shape[:2]
new_height, new_width = new_shape[:2]
# Adjustment for suitable mapping.
adj_height = 0.5 * (org_height/new_height-1)
adj_width = 0.5 * (org_width/new_width-1)
new = np.zeros(shape=new_shape, dtype=np.uint8)
for new_x in range(new_width):
for new_y in range(new_height):
# Added adjustment.
org_x = new_x * (org_width/new_width) + adj_width
org_y = new_y * (org_height/new_height) + adj_height
# To get the 4 near pixels.
org_x0 = int(org_x)
org_y0 = int(org_y)
org_x1 = np.clip(org_x0+1, 0, org_width-1)
org_y1 = np.clip(org_y0+1, 0, org_height-1)
# Linear interpolation.
v0 = (org_x1-org_x)*org[org_y0, org_x0, :] + (org_x-org_x0)*org[org_y0, org_x1, :]
v1 = (org_x1-org_x)*org[org_y1, org_x0, :] + (org_x-org_x0)*org[org_y1, org_x1, :]
v = (org_y1-org_y)*v0 + (org_y-org_y0)*v1
new[new_y, new_x, :] = v.astype(np.uint8)
return new
在放大2倍影像與最近鄰插值的比較可以看到,雙線性插值邊緣較為平順及自然,不像最近鄰插值鋸齒狀的邊緣與馬賽克的效果。因此雙線性插值也是一般應用程式或套件預設改變影像解析度的方法。
热门推荐
四川红原大草原景点介绍
湖北恩施十大景点全攻略:从自然奇观到民族文化,尽显恩施独特魅力
急性肠胃炎一般几天才能恢复正常?不吃药可以吗?
上海商场设置“父婴室”:亲子友好设施如何更贴心?
适合儿童用药的剂型是 孩子用啥剂型 年龄说了算
明军的腐化使播州经济崩溃,杨应龙为全占地盘逐步引发战事
Ps 滤镜:波纹
登革热病毒什么药可以阻止
大病医疗保险的报销比例是如何计算的
史铁生 | 生命的意义在于向内的建立
下雪不冷化雪冷?原来是因为这个科学原理
探寻四川阿坝北部的秘境桃源,在美丽的高原湿地,度过7天6晚假期
会跳科目三,还会后空翻,网友:机器人怎么不穿裤子?导演组回应
抑郁症引起斑秃怎么治疗
组织创新如何优化企业流程管理与资源配置
这样步行,多消耗20%到60%的能量!
指纹锁故障排查全攻略:从感应锁打不开到屏幕无反应的解决方案
SNH48 GROUP第十一届年度金曲大赏演唱会杭州站
实木餐桌保养方法及愉快用餐保障
美国留学加州伯克利分校环境专业详解
如何用PS“换头术”?自然调整五官比例的终极指南
一篇文章带你看懂ETF(建议收藏)
放疗期间的防护管理指南:从皮肤护理到饮食建议
在宁高校原创性科研成果频频登“顶”背后
退退退!夏天有一种热叫“登革热”,防护看这里
日照万平口风景区:亚洲第二大泻湖畔的旅游胜地
亮“舰”!一起来看“福建籍”舰队
30万预算买车怎么选?这几款都不错,档次高价格却很厚道
四战之地乌克兰,历史上曾3次独立建国?为何会并入沙俄与苏联
国企律师:晋升机会与职业发展之道