日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python图像插值

發布時間:2025/3/20 python 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python图像插值 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

最近鄰:選擇離它所映射到的位置最近的輸入像素的灰度值為插值結果。

?

最臨近插值

?

圖像的縮放很好理解,就是圖像的放大和縮小。傳統的繪畫工具中,有一種叫做“放大尺”的繪畫工具,畫家常用它來放大圖畫。當然,在計算機上,我們不再需要用 放大尺去放大或縮小圖像了,把這個工作交給程序來完成就可以了。下面就來講講計算機怎么來放大縮小圖象;在本文中,我們所說的圖像都是指點陣圖,也就是用 一個像素矩陣來描述圖像的方法,對于另一種圖像:用函數來描述圖像的矢量圖,不在本文討論之列。

?

越是簡單的模型越適合用來舉例子,我們就舉個簡單 的圖像:3X3 的256級灰度圖,也就是高為3個象素,寬也是3個象素的圖像,每個象素的取值可以是 0-255,代表該像素的亮度,255代表最亮,也就是白色,0代表最暗,即黑色 。假如圖像的象素矩陣如下圖所示(這個原始圖把它叫做源圖,Source):

?

234 38 22

?

67 44 12

?

89 65 63

?

這個矩陣中,元素坐標(x,y)是這樣確定的,x從左到右,從0開始,y從上到下,也是從零開始,這是圖象處理中最常用的坐標系,就是這樣一個坐標:

?

———————->X

?

|

?

|

?

|

?

|

?

|

?

∨Y

?

如果想把這副圖放大為 4X4大小的圖像,那么該怎么做呢?那么第一步肯定想到的是先把4X4的矩陣先畫出來再說,好了矩陣畫出來了,如下所示,當然,矩陣的每個像素都是未知數,等待著我們去填充(這個將要被填充的圖的叫做目標圖,Destination):

?

? ? ? ?

?

? ? ? ?

?

? ? ? ?

?

? ? ? ?

?

然后要往這個空的矩陣里面填值了,要填的值從哪里來來呢?是從源圖中來,好,先填寫目標圖最左上角的象素,坐標為(0,0),那么該坐標對應源圖中的坐標可以由如下公式得出:

?

srcX=dstX* (srcWidth/dstWidth) , srcY = dstY * (srcHeight/dstHeight)

?

好了,套用公式,就可以找到對應的原圖的坐標了(0*(3/4),0*(3/4))=>(0*0.75,0*0.75)=>(0,0)

?

,找到了源圖的對應坐標,就可以把源圖中坐標為(0,0)處的234象素值填進去目標圖的(0,0)這個位置了。

?

接下來,如法炮制,尋找目標圖中坐標為(1,0)的象素對應源圖中的坐標,套用公式:

?

(1*0.75,0*0.75)=>(0.75,0)

?

結果發現,得到的坐標里面竟然有小數,這可怎么辦?計算機里的圖像可是數字圖像,象素就是最小單位了,象素的坐標都是整數,從來沒有小數坐標。這時候采用的 一種策略就是采用四舍五入的方法(也可以采用直接舍掉小數位的方法),把非整數坐標轉換成整數,好,那么按照四舍五入的方法就得到坐標(1,0),完整的 運算過程就是這樣的:

?

(1*0.75,0*0.75)=>(0.75,0)=>(1,0)

?

那么就可以再填一個象素到目標矩陣中了,同樣是把源圖中坐標為(1,0)處的像素值38填入目標圖中的坐標。

?

依次填完每個象素,一幅放大后的圖像就誕生了,像素矩陣如下所示:

?

234 38 22 22

?

67 44 12 12

?

89 65 63 63

?

89 65 63 63

?

這 種放大圖像的方法叫做最臨近插值算法,這是一種最基本、最簡單的圖像縮放算法,效果也是最不好的,放大后的圖像有很嚴重的馬賽克,縮小后的圖像有很嚴重的 失真;效果不好的根源就是其簡單的最臨近插值方法引入了嚴重的圖像失真,比如,當由目標圖的坐標反推得到的源圖的的坐標是一個浮點數的時候,采用了四舍五 入的方法,直接采用了和這個浮點數最接近的象素的值,這種方法是很不科學的,當推得坐標值為 0.75的時候,不應該就簡單的取為1,既然是0.75,比1要小0.25 ,比0要大0.75 ,那么目標象素值其實應該根據這個源圖中虛擬的點四周的四個真實的點來按照一定的規律計算出來的,這樣才能達到更好的縮放效果。雙線型內插值算法就是一種 比較好的圖像縮放算法,它充分的利用了源圖中虛擬點四周的四個真實存在的像素值來共同決定目標圖中的一個像素值,因此縮放效果比簡單的最鄰近插值要好很多。

?

import cv2 import numpy as np def function(img):height,width,channels =img.shapeemptyImage=np.zeros((512,512,channels),np.uint8)sh=512/heightsw=512/widthfor i in range(512):for j in range(512):x=int(i/sh)y=int(j/sw)emptyImage[i,j]=img[x,y]return emptyImageimg=cv2.imread("./a.jpg") zoom=function(img) cv2.imshow("nearest neighbor",zoom) cv2.imshow("image",img) cv2.waitKey(0)

雙線性插值

雙線性內插值算法描述如下:
對于一個目的像素,設置坐標通過反向變換得到的浮點坐標為(i+u,j+v) (其中i、j均為浮點坐標的整數部分,u、v為浮點坐標的小數部分,是取值[0,1)區間的浮點數),則這個像素得值 f(i+u,j+v) 可由原圖像中坐標為 (i,j)、(i+1,j)、(i,j+1)、(i+1,j+1)所對應的周圍四個像素的值決定,即:

f(i+u,j+v) = (1-u)(1-v)f(i,j) + (1-u)vf(i,j+1) + u(1-v)f(i+1,j) + uvf(i+1,j+1)??? 公式1

其中f(i,j)表示源圖像(i,j)處的的像素值,以此類推。

比 如,象剛才的例子,現在假如目標圖的象素坐標為(1,1),那么反推得到的對應于源圖的坐標是(0.75 , 0.75), 這其實只是一個概念上的虛擬象素,實際在源圖中并不存在這樣一個象素,那么目標圖的象素(1,1)的取值不能夠由這個虛擬象素來決定,而只能由源圖的這四 個象素共同決定:(0,0)(0,1)(1,0)(1,1),而由于(0.75,0.75)離(1,1)要更近一些,那么(1,1)所起的決定作用更大一 些,這從公式1中的系數uv=0.75×0.75就可以體現出來,而(0.75,0.75)離(0,0)最遠,所以(0,0)所起的決定作用就要小一些, 公式中系數為(1-u)(1-v)=0.25×0.25也體現出了這一特點;

import cv2 import numpy as np import math def function(img,m,n):height,width,channels =img.shapeemptyImage=np.zeros((m,n,channels),np.uint8)value=[0,0,0]sh=m/heightsw=n/widthfor i in range(m):for j in range(n):x = i/shy = j/swp=(i+0.0)/sh-xq=(j+0.0)/sw-yx=int(x)-1y=int(y)-1for k in range(3):if x+1<m and y+1<n:value[k]=int(img[x,y][k]*(1-p)*(1-q)+img[x,y+1][k]*q*(1-p)+img[x+1,y][k]*(1-q)*p+img[x+1,y+1][k]*p*q)emptyImage[i, j] = (value[0], value[1], value[2])return emptyImageimg=cv2.imread("./a.jpg") zoom=function(img,512,512) cv2.imshow("Bilinear Interpolation",zoom) cv2.imshow("image",img) cv2.waitKey(0)

雙三次插值

import cv2 import numpy as np import mathdef S(x):x = np.abs(x)if 0 <= x < 1:return 1 - 2 * x * x + x * x * xif 1 <= x < 2:return 4 - 8 * x + 5 * x * x - x * x * xelse:return 0 def function(img,m,n):height,width,channels =img.shapeemptyImage=np.zeros((m,n,channels),np.uint8)sh=m/heightsw=n/widthfor i in range(m):for j in range(n):x = i/shy = j/swp=(i+0.0)/sh-xq=(j+0.0)/sw-yx=int(x)-2y=int(y)-2A = np.array([[S(1 + p), S(p), S(1 - p), S(2 - p)]])if x>=m-3:m-1if y>=n-3:n-1if x>=1 and x<=(m-3) and y>=1 and y<=(n-3):B = np.array([[img[x-1, y-1], img[x-1, y],img[x-1, y+1],img[x-1, y+1]],[img[x, y-1], img[x, y],img[x, y+1], img[x, y+2]],[img[x+1, y-1], img[x+1, y],img[x+1, y+1], img[x+1, y+2]],[img[x+2, y-1], img[x+2, y],img[x+2, y+1], img[x+2, y+1]],])C = np.array([[S(1 + q)],[S(q)],[S(1 - q)],[S(2 - q)]])blue = np.dot(np.dot(A, B[:, :, 0]), C)[0, 0]green = np.dot(np.dot(A, B[:, :, 1]), C)[0, 0]red = np.dot(np.dot(A, B[:, :, 2]), C)[0, 0]# ajust the value to be in [0,255]def adjust(value):if value > 255:value = 255elif value < 0:value = 0return valueblue = adjust(blue)green = adjust(green)red = adjust(red)emptyImage[i, j] = np.array([blue, green, red], dtype=np.uint8)return emptyImageimg=cv2.imread("./a.jpg") zoom=function(img,512,512) cv2.imshow("cubic",zoom) cv2.imshow("image",img) cv2.waitKey(0)

?

轉載于:https://www.cnblogs.com/home123/p/7345487.html

總結

以上是生活随笔為你收集整理的python图像插值的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 中文字幕一区二区三区在线不卡 | 欧美一区二区三区爱爱 | 6090伦理| 久久久久久久香蕉 | 丰满人妻一区二区三区免费 | 视频一区二区在线播放 | 午夜激情四射 | 瑟瑟网站免费 | 奇米影视中文字幕 | 欧美暧暧视频 | 91porny首页入口 | 日本一区二区三区在线视频 | 91久久综合精品国产丝袜蜜芽 | 九九热视频在线免费观看 | aaa一级片 | www,99| 爱爱激情网 | 日韩精品人妻中文字幕有码 | 欧美一区二区三区啪啪 | 看一级片 | 欧美日韩一区二区三区在线 | 都市激情校园春色 | 国产日产精品一区二区 | 中文字幕综合网 | 久久伊人免费 | 免费黄色看片 | 亚洲熟女综合色一区二区三区 | 海角社区id:1220.7126,10. | 欧美一区二区三区大屁股撅起来 | 青青久久av北条麻妃黑人 | 色播五月激情五月 | 国产资源久久 | 看欧美一级片 | 亚洲永久精品在线观看 | 欧美a久久| 激情的网站 | 国产手机在线 | 久久天堂精品 | 女同亚洲精品一区二区三 | 青青操免费在线视频 | 一本久道久久综合无码中文 | 日本高潮视频 | 51吃瓜网今日 | 97狠狠操| 国产99久久久国产精品免费看 | 男人的天堂视频网站 | 求毛片网站| 亚洲做受高潮无遮挡 | 天天插日日插 | 美女裸片 | 污污内射久久一区二区欧美日韩 | 欧美一区二区三区成人精品 | 国产色网址 | 国产91精品久久久久 | 中文字幕第一页在线 | 最近更新中文字幕 | 91看片在线 | 无码人妻精品一区二区三区99不卡 | 夜色一区二区三区 | 亚州一区二区 | 污视频网站在线播放 | 欧美精品亚洲精品日韩精品 | 久久理论视频 | 女人又爽又黄免费女仆 | 少妇高潮久久久久久潘金莲 | 欧美一区久久 | 999精品在线观看 | 国产传媒一级片 | 久久性生活 | 国产夫妻在线 | 久久夜夜夜 | 国产精品天天看 | 田中瞳av| 蜜臀久久99精品久久久 | 国产suv精品一区二区6 | 国产又粗又猛又爽又黄91 | 麻豆av一区二区三区 | 午夜激情av | 久草资源在线观看 | xxxxxx国产| 日韩激情在线视频 | 精品人妻一区二区三区久久 | 欧美爱爱小视频 | 国产美女永久免费无遮挡 | 激情吧 | 91免费网站入口 | 天天干天天操天天操 | 一本色道久久综合精品婷婷 | 午夜国产一区二区 | 天堂在线资源库 | 国产无遮挡一区二区三区毛片日本 | 人妖交videohd另类 | 国产精品久久久久久久天堂 | 白丝一区 | 亚洲88av| 日本美女毛茸茸 | 涩色视频 | av综合色| 成人福利在线免费观看 |