双线性插值原理及实现
创作时间:
作者:
@小白创作中心
双线性插值原理及实现
引用
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倍影像與最近鄰插值的比較可以看到,雙線性插值邊緣較為平順及自然,不像最近鄰插值鋸齒狀的邊緣與馬賽克的效果。因此雙線性插值也是一般應用程式或套件預設改變影像解析度的方法。
热门推荐
开车时后视镜的使用技巧有哪些?后视镜的正确观察对行车安全有何重要性?
项目管理单代号网络图怎么画
双代号网络图的概念
多重冲击难改非洲发展光明前景
只需30 秒的努力,就能多燃烧多达 40% 的脂肪
蓝莓基质栽培配方
别扔咖啡渣!解锁它的N种神奇用法
T触发器:电路,真值表和工作
桂林住房公积金贷款17个常见问题全解析
哪些果蔬适合放冰箱?怎样存放更健康?一文了解→
iPad黑屏怎么办?7种实用解决方案帮你轻松应对
车辆识别代号VIN的重要性:了解你的车辆身份与历史记录
59岁NASA女宇航员被抬出舱,暂失行走能力,留太空9个月无加班费
低收入群体“为什么不扩大消费”?关键是要提高居民可支配收入
共有财产不用意怎么向法院提出异议
减肥,是减脂还是减重?4个方法减脂,保留住肌肉
《中国成人疫苗大众接种认知和行为调研报告》发布,你是哪类人群?
可以和招商银行协商还款吗?答案在这里
Excel模糊匹配方法详解:从基础到进阶
减肥吃鸡胸肉的好处与坏处
买房前必读:如何进行市场调研和比较?
UI设计师私单收费标准全解析
使用Matplotlib实现3D图形的鼠标滚轮缩放功能
HSF管理体系的主要内容有哪些?
HSF管理体系的主要内容有哪些?
外国人申请L(探亲)签证注意事项
【带状疱疹关注周】爱不等“带”,远离疱疹痛
山东大学校训、校徽、校歌及其含义是什么
心跳45次每分钟,正常吗?看完这篇就知道
布洛芬吃多了会有哪些危害?