1. 程式人生 > >最鄰近插值法(The nearest interpolation)實現影象縮放

最鄰近插值法(The nearest interpolation)實現影象縮放

也稱零階插值。它輸出的畫素灰度值就等於距離它對映到的位置最近的輸入畫素的灰度值。但當影象中包含畫素之間灰度級有變化的細微結構時,最鄰近演算法會在影象中產生人為加工的痕跡。
具體計算方法:對於一個目的座標,設為 M(x,y),通過向後對映法得到其在原始影象的對應的浮點座標,設為 m(i+u,j+v),其中 i,j 為正整數,u,v 為大於零小於1的小數(下同),則待求象素灰度的值 f(m)。利用浮點 m 相鄰的四個畫素求f(m)的值。
function re_im = nearest(im, p, q)
%最鄰近插值法,輸入目標影象和行縮放、縱縮放倍數
%ziheng 2016.3.27
[m,n]
= size(im); im_R = im(:,:,1); im_G = im(:,:,2); im_B = im(:,:,3); l = round(m*p); h = round(n*q)/3; re_R = uint8(zeros(l,h)); re_G = uint8(zeros(l,h)); re_B = uint8(zeros(l,h)); for dstx = 1:l for dsty = 1:h srcx = max(1,min(m,round(dstx/p))); srcy = max(1,min(n/3,round(dsty/q))); re_R(dstx,dsty) = im_R(srcx,srcy); re_G(dstx,dsty) = im_G(srcx,srcy); re_B(dstx,dsty) = im_B(srcx,srcy); end
end re_im = cat(3,re_R,re_G,re_B); figure,imshow(re_im);

相關推薦

鄰近(The nearest interpolation)實現影象

也稱零階插值。它輸出的畫素灰度值就等於距離它對映到的位置最近的輸入畫素的灰度值。但當影象中包含畫素之間灰度級有變化的細微結構時,最鄰近演算法會在影象中產生人為加工的痕跡。 具體計算方法:對於一個目的座標

影象處理中兩種基本的演算法(鄰近和雙線性內)

在影象的基本仿射變換中,經常會碰到經過旋轉、縮放後灰度值如何賦值的問題。因為變換之後,影象的座標位置有可能是小數,所以就需要插值演算法來確定到底將該畫素賦予哪個位置。 1、最鄰近插值法(Nearest Interpolation) 這是最簡單的一種插值方法,不需要計算。在待

Lanczos鄰近,雙線性二次,三次

本文為轉載,原部落格地址:http://blog.csdn.net/trent1985/article/details/45150677 [研究內容] 目前比較常用的幾種插值演算法 [正文] 目前比較常用的插值演算法有這麼幾種:最鄰近插值,雙線性二次插值,三次插值, Lan

一維最優化:二次(Quadratic interpolation method)

理論見參考《Practical Optimization》中4.5節,程式碼實現如下:( 可以將黃金分割法和二次插值法結合起來,想用黃金分割法快速搜尋得到最優解,然後用該最優解作為二次插值的初值,可以提高計算精度。Matlab中就是採用此組合策略。 ) OneDimensi

用線性演算法實現影象

  為了方便理解,先考慮一維情況下的線性插值  對於一個數列c,我們假設c[a]到c[a+1]之間是線性變化的  那麼對於浮點數x(a<=x<a+1),c(x)=c[a+1]*(x-a)+c[a]*(1+a-x);  這個好理解吧? 把這種插值方式擴充套件到二維情況  對於一個二維陣列c,我們假

FFMPEG 簡濾鏡filter使用例項(實現視訊,裁剪,水印等)

    FFMPEG官網給出了FFMPEG 濾鏡使用的例項,它是將視訊中的畫素點替換成字元,然後從終端輸出。我在該例項的基礎上稍微的做了修改,使它能夠儲存濾鏡處理過後的檔案。在上程式碼之前先明白幾個概念:     Filter:代表單個filter     FilterPa

雙線性鄰近 處理圖片的旋轉,放大

對於一張圖片旋轉某個角度,其實就是把每個畫素計算好它的位置,再對對應的位置設定畫素值即可,以順時針為例,如下圖,由P點旋轉到P', x=rcos(a) y=rsin(a) x'=rcos(a+b)=rcos(a)cos(b)-rsin(a)sin(b) y'=rsi

Codeforces 622F The Sum of the k-th Powers ( 自然數冪和、拉格朗日 )

n-1 power HERE sig class text name while pow 題目鏈接 題意 : 就是讓你求個自然數冪和、最高次可達 1e6 、求和上限是 1e9 分析 : 題目給出了最高次 k = 1、2、3 時候的自然數冪和求和公式 可以發現求和公式的

對於多複雜資料的優方法---拉格朗日

  在數值分析中,拉格朗日插值法是以法國十八世紀數學家約瑟夫·拉格朗日命名的一種多項式插值方法。許多實際問題中都用函式來表示某種內在聯絡或規律,而不少函式都只能通過實驗和觀測來了解。如對實踐

拉格朗日及應用

oci cin app .com dmg npe info sina gin 3man6h1yg巫http://shufang.docin.com/sina_6355780928 7DMg布62夏aq撂儼8秤http://www.docin.com/app/user/use

拉格朗日

說明 -1 需要 插值 是什麽 col pre rac div   給定 $n$ 個點 $(x_1, y_1), (x_2, y_2), ..., (x_n, y_n)$ , 其中 $x_1, x_2, ..., x_n$ 互不相等, 構造一個最高次不超過 $n-1$ 的多

圖像

值方法 方向 信息 基於 lan 介紹 XML 模型 技術分享 第一部分: 在做數字圖像處理時,經常會碰到小數象素坐標的取值問題,這時就需要依據鄰近象素的值來對該坐標進行插值。比如:做地圖投影轉換,對目標圖像的一個象素進行坐標變換到源圖像上對應的點時,變換出來

4559[JLoi2016]成績比較 容斥+拉格朗日

mem otto spa ack input mes mod 只需要 rip 4559: [JLoi2016]成績比較Time Limit: 20 Sec Memory Limit: 256 MBSubmit: 261 Solved: 165[Submit][Statu

樣條(Java)

Coding trace 算法 top writer 檢查 block 技術分享 iter 該程序包含:樣條插值法、讀取文件,寫入文件,字符型轉double型方法等; 適合初學Java的人學習; 在cmd中執行, 在Linux中執行 完整代碼如下: 樣條插值法:

Python實現拉格朗日

erp 拉格朗日 input 估計 while 關系 NPU init for 已知sinx的一組x,y對應關系,用拉格朗日插值法估計sin(0.3367)的值. x x0.32 0.34 0.36 y 0.314567 0.333487 0.352274

Python實現牛頓(差商表)

插值 ima proc 保存 append ces fun shadow 計算 def func(x,y,X,infor=True): list2=[y[0]] # 差商表的對角線的第一個元素始終是y0 count=1 while(T

newtonc++版

 如果是拉格朗日插值法的話把註釋的朗格朗日函式去掉註釋就可以了 //stdafx.h #include<stdafx.h> #include<stdio.h> #include<stdlib.h> #include<io

拉格朗日二次C語言版

數值表是這樣的 X:0.46,0.47,0.48,,,,,,, Y:0.4846555,0.4937452,0.5027498,,,,,, 由於是二次插值法,只需要三組XY資料 程式碼如下: #include "stdafx.h" #include "iostre

近鄰和雙線性的基本原理 以及OpenCV中resize函式的用法改變影象的大小

最近鄰插值和雙線性插值的基本原理 影象的縮放很好理解,就是影象的放大和縮小。傳統的繪畫工具中,有一種叫做“放大尺”的繪畫工具,畫家常用它來放大圖畫。當然,在計算機上,我們不再需要用放大尺去放大或縮小影象了,把這個工作交給程式來完成就可以了。下面就來講講計算機怎麼來放大縮小圖象;在本文中,