精华内容
下载资源
问答
  • 能够实现对一幅图像的最近邻、双线性、双三次三种插值
  • 先讲一下最近邻插值法,就是找到未知像素点相邻的4个已知像素点,然后判断哪一个像素离着未知像素点近,就让那个点同化未知像素点,赋予未知点同样的像素值。 当然你会说,我们还不知道怎么把小图上的点放置到大图...

    所谓近朱者赤近墨者黑,无论什么插值方法根本思想都是一样的。

    先讲一下最近邻插值法,就是找到未知像素点相邻的4个已知像素点,然后判断哪一个像素离着未知像素点近,就让那个点同化未知像素点,赋予未知点同样的像素值。

    当然你会说,我们还不知道怎么把小图上的点放置到大图上的位置上去,而且两图不成比例的话更不好放置了,那又怎么去寻找位置点以及未知点周围的点呢?而且边缘的点还未必能够找的到4个邻居。

    但是实际处理的时候不用考虑那么多,我们直接按照下面的式子去处理:

     使用目标图的坐标乘以两图的长宽比例得到原图的坐标,当然这个坐标可能会是小数,就直接四舍五入了,这样就得到了两个图像中坐标的对应关系,使它们具备同样的像素值即可。

    就这么简单,缺点也很明显,插值后你放大图像就像打了马赛克一样,失真严重。

    ----------------------------------------------------------------------------------------------------------------------------------

    双线性插值法是图像插值的一个重要方法,下面我们来看一下,我尽量通俗的把它介绍一下。

    首先我们先看一下什么是单线性插值

    比如给你上面这个图,本来有两个大师x0和x1,他们的法力值为f(x0)和f(x1),现在在某个地方出现了一个徒弟x,那么请问徒弟学会了多少法力呢?博主是个感性的人,f(x)可以直接理解为x0或x1离x越近产生的影响越大,那么f(x)就等于x0和x1距离x的相应比比例乘以f(x1)和f(x0)求和,然后就得到下面的式子了:

    如果把f(x0)和f(x1)看成像素值,x0和x1看成一维坐标,那么这就是一个单线性插值的图像问题了。

    而双线性插值呢就是在x,y两个方向上进行了3次单线性插值。

    看下面左边的图,P点为待求点,Q11、Q12、Q21、Q22分别是离P点最近的4个已有点。右边的立体图则更形象一些,可以把右边图中的高度看成像素灰度值,黄色点标错了,应该是(x,y)点,其他点都是棕色的。

     我们要求P点的像素值,就先在X方向上进行两次单线性插值求得R1和R2的值。

     

     然后在Y方向上进行一次单线性插值。

     

     把上面三次插值处理的式子结合起来,也就得到了我们要求的P点的像素值,如下:

     

    è¿éåå¾çæè¿°

    这样我们就求得P点的像素值了,有没有发现分母都是1?在实际用的时候又会引出其他的问题比如中心对齐问题,大家自己去看相关资料吧。

    但是双线性插值是有缺点的:

    (1)该方法具有很好的平滑作用,但是平滑作用会使细节退化,放大后很明显。

    (2)不连续性会产生我们不想要的结果。本来我们需要像素值值不连续或者有剧烈变化,但处理后该特征消失。

    -----------------------------------------------------------------------------------------------------------------------------------

    此外还有高阶插值,又称双三次插值法,理解起来就困难一些了,先上一张关键图,以后有时间我在分析一下。

    展开全文
  • 最近邻插值法&线性插值&双线性插值&三线性插值【转载】 文章来源于博客园作者:霓裳依旧 文章链接:最近邻插值法&线性插值&双线性插值&三线性插值

    最近邻插值法&线性插值&双线性插值&三线性插值【转载】

    文章来源于博客园作者:霓裳依旧
    文章链接:最近邻插值法&线性插值&双线性插值&三线性插值

    展开全文
  • 最近邻插值法 在一维空间中,最近点插值就相当于四舍五入取整。在二维图像中,像素点的坐标都是整数,该方法就是选取离目标点最近的点。 使用下面的公式放大图像! I’ 为放大后图像, I为放大前图像, a为放大率,...

    最近邻插值法

    在一维空间中,最近点插值就相当于四舍五入取整。在二维图像中,像素点的坐标都是整数,该方法就是选取离目标点最近的点。

    使用下面的公式放大图像! I’ 为放大后图像, I为放大前图像, a为放大率,方括号是四舍五入取整操作
    在这里插入图片描述

    给定一个矩阵,将1个 3 ∗ 3 尺寸的矩阵使用最近邻插值法到 4 ∗ 4

    在这里插入图片描述
    src_x:原图像中像素点x坐标
    src_y:原图像中像素点y坐标
    dst_x:目标图像中像素点x坐标
    dst_y:目标图像中像素点y坐标
    src_w:原图像宽度(width)
    src_h:原图像高度(height)
    dst_w:目标图像宽度(width)
    dst_h:目标图像高度(height)

    des中的坐标,对应src中坐标公式:
    src_x = dst_x * (src_w/dst_w)
    src_y = dst_y * (src_h/dst_h)

    dst[0,0]对应的src位置如下:
    src_x = 0 * (3 / 4) = 0
    src_y = 0 * (3 / 4) = 0
    所以dst[0,0] = src[src_x,src_y] = src[0,0] = 234

    dst[0,1]对应的src位置如下:
    src_x = 0 * (3 / 4) = 0
    src_y = 1 * (3 /4) = 0.75
    所以dst[0,1] = src[src_x,src_y] = src[0,0.75]

    由于图片像素最小单位是1,所以四舍五入dst[0,1] = src[0,1] = 38
    根据以上公式最终结果如下:
    在这里插入图片描述

    import cv2
    import numpy as np
    import matplotlib.pyplot as plt
    
    
    # Nereset Neighbor interpolation
    def nn_interpolate(img, ax=1, ay=1):
    	H, W, C = img.shape
    
    	aH = int(ay * H)
    	aW = int(ax * W)
    
    	y = np.arange(aH).repeat(aW).reshape(aW, -1)
    	x = np.tile(np.arange(aW), (aH, 1))
    	y = np.round(y / ay).astype(np.int)
    	x = np.round(x / ax).astype(np.int)
    
    	out = img[y,x]
    
    	out = out.astype(np.uint8)
    
    	return out
    
    
    # Read image
    img = cv2.imread("imori.jpg").astype(np.float)
    
    # Nearest Neighbor
    out = nn_interpolate(img, ax=1.5, ay=1.5)
    
    # Save result
    cv2.imshow("result", out)
    cv2.waitKey(0)
    cv2.imwrite("out.jpg", out)
    

    参考链接https://blog.csdn.net/siyue0211/article/details/92660001

    展开全文
  • 这里写自定义目录标题 1.将图像长宽像素均减小一半 clear all; %导入图片并显示原图 img=imread('E:/tupian/abc.bmp');...2.最近邻插值法将图像长宽像素均增大一倍,生成新图像 clear all; %导入图片并显示原

    这里写自定义目录标题

    1.将图像长宽像素均减小一半

    clear all;
    %导入图片并显示原图 
    img=imread('E:/tupian/abc.bmp');
    imshow(img);
    [row col ch]=size(img);
    figure;
    img1=imresize(img,[row*0.5, col*0.5]);%行列缩小一半
    imshow(img1);
    title('长宽像素缩小一半图');
    
    

    2.最近邻插值法将图像长宽像素均增大一倍,生成新图像

    clear all;
    %导入图片并显示原图 
    img=imread('E:/tupian/abc.bmp');
    figure;
    imshow(img);
    title('原图');
    %计算原图长、宽、通道数 
    [row col ch]=size(img);
    %放大两倍
    rr=ceil(row*2);
    cc=ceil(col*2);
    img2=uint8(zeros(rr,cc,ch));
    for k=1:ch 
        for i=1:rr
            for j=1:cc 
                x=i/2;
                m=ceil(x);
                y=j/2;
                n=ceil(y);
      if m>=1&&m<row &&n>=1&&n<col 
                   x=m;
                   y=n;  %最邻近插值算法 
                img2(i,j,k)=img(x,y,k);
               end
            end
        end
    end
    figure;
    imshow(img2);
    title('长宽各放大两倍结果图');
    
    

    3.图像平移

    %图像平移  
    I = imread('E:/tupian/abc.bmp') 
    se=translate(strel(1),[10 50]);%  向下平移10,向右平移50
    B=imdilate(I,se);%形态学膨胀  
    figure;  
    subplot(1,2,1),subimage(I); 
    title('orginal image'); 
    subplot(1,2,2),subimage(B); 
    title('translate image');
    

    在这里插入图片描述

    4.图像旋转

    clear all;
    %图像旋转
    I = imread('E:/tupian/abc.bmp');
    % I=imread('cameraman.tif');
    I_45N=imrotate(I,45,'bilinear');
    imwrite(I_45N,'abc_逆时针45.bmp'); 
    I_30S=imrotate(I,-30,'bilinear'); 
    imwrite(I_30S,'abc_顺时针30.bmp'); 
    subplot(1,3,1);
    imshow(I);
    subplot(1,3,2);
    imshow(I_45N); 
    subplot(1,3,3);
    imshow(I_30S);
    

    在这里插入图片描述
    在这里插入图片描述

    展开全文
  • 最近邻插值法nearest_neighbor是最简单的灰度值插值。也称作零阶插值,就是令变换后像素的灰度值等于距它最近的输入像素的灰度值。 造成的空间偏移误差为像素单位,计算简单,但不够精确。但当图像中的像素灰度级有...
  • 20180306站位
  • 最近邻插值算法 python实现

    千次阅读 2020-03-18 01:36:03
    最近邻插值法放大图像: 最近邻插值法在放大图像时补充的像素是最近邻的像素的值。由于方法简单,所以处理速度很快,但是放大图像画质劣化明显,常常含有锯齿边缘。 最近邻插值法算法原理 ↑ 二. 最近邻插值法...
  • 最近邻插值法
  • 利用最近邻插值法实现图像的缩小与放大.....................................................................................
  • 一、最近邻插值法放大图像 最近邻插值法在放大图像时补充的像素是最近邻的像素的值。由于方法简单,所以处理速度很快,但是放大图像画质劣化明显,常常含有锯齿边缘。 原理如下: 二、双线性插值 在数学上,双线性...
  • 【OpenCV】最近邻插值

    千次阅读 2018-03-09 15:42:22
    最近邻插值法 定义:将变换后的图像各像素点的灰度值设置为源图像中与其最邻近像素的灰度值的方法。 则: // 相应的缩放比例 float fw = float W / w; float fh = float H / h; // 则目标图像中(X, Y)的...
  • 最近邻插值法

    2019-11-14 18:35:12
     定义最近邻插值法的实现函数: def Nearest_neighbor_interpolation(n, m, img): new_img = [[] for _ in range(n)] r = n / float(np.shape(img)[0]) l = m / float(np.shape(img)[1]) for i in range...
  • I am trying to write my own function for scaling up an input image by using the Nearest-neighbor interpolation algorithm. The bad part is I am able to see how it works but cannot find the algorithm it...
  • Python 实现的最近邻插值与 线性插值 linear_interpolate nearest_interpolate
  • 2 Matlab实现最近邻插值、双线性插值、双三次插值3最近邻插值的原理简介4双线性插值的原理简介5双三次插值原理简介 1插值是什么?为啥要插值? 一句话来说就是插值用于图片缩放,为了解决图片缩放中可能出现小数坐标...
  • 目录一、插值与图像缩放二、最近邻插值1、原理2、代码实现三、双线性插值1、原理2、代码实现 一、插值与图像缩放   首先举个例子说明插值过程,先看看matlab的插值函数 interp() 吧: x = -2 : 1 : 2; y = -2 : 1 ...
  • 这是一个使用最近邻插值法按比例放大(或缩小)像素画的程序包。 这样可以使低分辨率图像更加清晰可见。 如果您具有按比例放大的像素图,也可以使用它来恢复原始纹理。 用法 // get the image at input.png, scale ...
  • 可以通过给定的正因子缩放给定的图像。 复制nearest_neighbor_zoom.m 文件和应该放大到您的工作目录的图像文件。 如果图像文件的名称是 image.jpg 并且需要的缩放系数是 2.23, 在命令窗口上运行以下命令。...
  • 最近邻差值法最近邻差值法最近邻差值法最近邻差值法最近邻差值法最近邻差值法最近邻差值法最近邻差值法最近邻差值法最近邻差值法最近邻差值法最近邻差值法最近邻差值法最近邻差值法最近邻差值法最近邻差值法最近邻...
  • 插值算法:最近邻插值、双线性插值 插值算法有很多种,这里列出关联比较密切的三种: 最近邻(Nearest Interpolation):计算速度最快,但是效果最差。 双线性插值(Bilinear Interpolation):双线性插值是用原图像...
  • 最近邻插值 与 双线性插值算法 优化迭代 的 0.5 像素之差
  • 最近邻插值 #include<iostream> #include<stdio.h> #include<stdlib.h> #include<Windows.h> using namespace std; typedef unsigned short WORD; typedef unsigned long DWORD; #pragma ...
  • 最近邻插值、双线性插值、双三次插值

    万次阅读 多人点赞 2018-07-23 14:09:16
    1.最近邻插值 越是简单的模型越适合用来举例子,我们就举个简单的图像:3X3 的256级灰度图,也就是高为3个象素,宽也是3个象素的图像,每个象素的取值可以是 0-255,代表该像素的亮度,255代表最亮,也就是白色,0...
  • 其中有两种简单又常用的插值算法用来实现图像缩放,分别是最近邻插值算法和双线性插值算法。 最近邻插值算法: 最近邻插值算法的思想十分简单 设原始图像src的高为h,宽为w,图像上像素值为(x,y)。 设目标图像dst...
  • Matlab之最近邻插值'nearest'

    千次阅读 2020-02-22 17:44:51
    最近邻插值 ‘nearest’ 什么是最近邻插值?我的理解是它就是用来对新的像素进行赋值的一种方法。 为了能方便快速的弄清楚它对图像像素的具体操作,我用的是4×4像素的图像,通过imresize()函数来展示。 对该图像...
  • 图像插值-最近邻插值(nearest)

    千次阅读 2020-08-20 15:23:40
    最近邻插值(nearest) 算法 该算法不凭空设定元素点的值,而是选择源图像中最近邻像素点来填充目标图像。 那么,目标元素点所选择的源图像元素点位置应为: srcX=round(dstX/K) srcY=round(dstY/K) 其中,round...
  • N维数组的快速最近邻插值(Nearest Neighbour),Python实现 这份代码实现的是numpy.ndarray的快速最近邻插值(放缩)。而这个方法貌似并没有直接的API。 目标 我们由3*3的数组如下: [[1 2 3] [4 5 6] [7 8 9]] ...
  • 图像插值方法--最近邻插值

    千次阅读 2018-07-04 22:12:37
    1. 最近邻插值 定义:目标各像素点的灰度值--&gt;源图像中与其最邻近像素的灰度值。 最近临插值算法优点是算法简单,易于实现,但是缺点是由于相邻像素点的像素值相同,容易出现色块现象。#include&lt;...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 2,922
精华内容 1,168
关键字:

最近邻插值法