日韩性视频-久久久蜜桃-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图像插值的全部內容,希望文章能夠幫你解決所遇到的問題。

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

主站蜘蛛池模板: 黄色片视频免费 | 人人妻人人玩人人澡人人爽 | 无码国产精品一区二区免费式直播 | 人体av | 国产精品va无码一区二区 | 开心激情播播网 | 日本a在线| 久久精品国产亚洲av久一一区 | 800av凹凸| 久久久久婷 | 好屌妞视频这里有精品 | 伊人久久精品一区二区三区 | 日本黄色免费 | 99久久久国产精品无码免费 | 久久免费福利视频 | 精品国产伦一区 | 日本一级吃奶淫片免费 | 日批视频在线 | 337p粉嫩大胆噜噜噜噜69影视 | 波多野结衣一区二区三区高清av | 国产精品88| 五月婷婷亚洲 | 精品无码在线观看 | 天天干,夜夜爽 | 亚洲二区在线播放视频 | 久久久久久片 | 亚洲精华国产精华精华液网站 | 中出在线 | 本道综合精品 | 黄色av一级片 | 黑白配av | 蜜桃精品噜噜噜成人av | 久久久久a | 视频在线观看电影完整版高清免费 | 国产成人av在线 | 成人精品一区二区三区视频 | 一本久道久久综合 | 青春草av | 国产清纯白嫩初高中在线观看性色 | 欧美偷拍另类 | 亚洲午夜久久久久久久国产 | 亚洲精品2区 | 超碰人人人人人人人 | porn麻豆 | 欧美成在线视频 | 超碰在线视屏 | 天天射天天干天天舔 | 夜夜嗨av一区二区三区免费区 | 插插影视 | 亚洲精品在线观看av | 爱久久视频| 九七电影院97理论片 | 精品国产乱码久久久久久婷婷 | 日本午夜精华 | 亚洲人视频在线观看 | 亚洲天堂爱爱 | av网站黄色| 天天爱夜夜操 | 国产精品毛片一区二区在线看舒淇 | 国产女人高潮毛片 | 国产成人在线免费视频 | 伊人夜色 | 毛片无码免费无码播放 | 日美毛片 | 精品国产AV色欲天媒传媒 | 草久久免费视频 | 久久久视 | 午夜剧场成人 | av中文字幕一区二区 | 亚州激情视频 | 欧美又大粗又爽又黄大片视频 | 姑娘第5集在线观看免费好剧 | 最新中文字幕在线观看 | 日韩伦理中文字幕 | 国产原创视频在线观看 | 国产福利网 | 国产美女激情视频 | 日本视频色 | 欧美特黄aaa | 在线看一区二区 | 极品美女扒开粉嫩小泬 | 精品久久网站 | 精品国模一区二区三区欧美 | 亚州男人的天堂 | 国产亚洲精品成人 | 色呦呦在线免费观看 | 日韩在线中文字幕视频 | 久久精品视频中文字幕 | 午夜网站免费 | 亚洲视频成人 | 视频在线观看免费 | jizz免费在线观看 | 国产精品色婷婷99久久精品 | 人妻丰满熟妇无码区免费 | 亚洲国产精品成人综合在线 | 亚洲性激情 | 中文字幕资源网 | 成人91免费 | 国产日韩欧美成人 |