IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 数据结构与算法 -> MATLAB 最邻近插值、双线性插值以及三次卷积插值的实现 -> 正文阅读

[数据结构与算法]MATLAB 最邻近插值、双线性插值以及三次卷积插值的实现

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


提示:以下是本篇文章正文内容,下面案例可供参考

??????

理论知识网上都有,这边直接展示代码和运行结果。

1、最邻近插值

%R 放大倍数
function M=closet(filename,R)
F=imread(filename);
[row,col,color]=size(F);
row=row*R;
col=col*R;
M=zeros(row,col,color,class(F));
for i=1:row
    for j=1:col
       for n=1:color
            x = floor(i/R+0.5);
            y = floor(j/R+0.5);
            %为了避免出现‘位置 1 处的索引无效。数组索引必须为正整数或逻辑值’的问题。
            %Matlab中的数组或矩阵的下标最小为1
             if x==0
                x=x+1
             end
             if y==0
                y=y+1
             end
             M(i,j,n) = F(x,y,n);
        end
   end
end
    figure(1);
    imshow(F);
    figure(2);
    imshow(M)
end

?注:这里我把代码写成了函数,使用时调用函数即可(文件名称根据自己的来)。

调用代码:

M=closet('写轮眼.jpg',3);

?运行结果:

?

2、双线性插值

function A=bilinear(filename,C)
F=imread(filename);
[row,col,color]=size(F);
row=row*C;
col=col*C;
[d,e,f]=size(F);
A=zeros(row,col,color,class(F));
for i = 1:row
    for j = 1:col
        for n = 1:color
            x = floor(i/C);
            y = floor(j/C);
            if x == 0
                x = x+1;
            end
            if y ==0
                y = y+1;
            end
            u = i/C-floor(i/C); 
            v = j/C-floor(j/C); %求出dx和dy
                 if x==d
                     x=x-1;
                 end
                 if y==e
                     y=y-1;
                 end
                    A(i,j,n) =(1-u)*(1-v)*F(x,y,n)+(1-u)*v*F(x+1,y,n)+u*(1-v)*F(x,y+1,n)+u*v*F(x+1,y+1,n);
        end
    end
end
figure(3);
imshow(F);
figure(4);
imshow(A)
end

?

运行结果:

?

结果分析:因为前两种插值都是彩色图像作为原图像,容易对比。两种插值方法的结果都是把原图像的一个像素分为9个小像素(放大可见,双线性较为明显);双线性插值的结果中9个小像素的颜色各不相同,出现了明显的颜色变化,这说明?该算法的功能性很好。

3、三次卷积插值

function g=SSJJ(filename,k)
F=imread(filename);                               
[m,n,color]=size(F);  
f=rgb2gray(F);
a=f(1,:);
c=f(m,:) ;        %将图像扩展四行四列
b=[f(1,1),f(1,1),f(:,1)',f(m,1),f(m,1)];
d=[f(1,n),f(1,n),f(:,n)',f(m,n),f(m,n)];
a1=[a;a;f;c;c];
b1=[b;b;a1';d;d];
f=b1';
f1=double(f);
for i=1:m*k
    dx=i/k-floor(i/k);           
     x=floor(i/k)+2;   
     A=[sw(1+dx) sw(dx) sw(1-dx) sw(2-dx)];   %四个横坐标的权重W(i)
  for j=1:n*k
    dy=rem(j,k)/k;
     y=floor(j/k)+2;   
    C=[sw(1+dy);sw(dy);sw(1-dy);sw(2-dy)]; 
    B=[f1(x-1,y-1),f1(x-1,y) ,f1(x-1,y+1), f1(x-1,y+2)    
         f1(x ,y-1),f1(x,   y),f1(x,  y+1),f1(x,   y+2)
         f1(x+1,y-1),f1(x+1,y),f1(x+1,y+1),f1(x+1,y+2)
         f1(x+2,y-1),f1(x+2,y),f1(x+2,y+1),f1(x+2,y+2)];
    g1(i,j)=(A*B*C);
  end
end
g=uint8(g1); %将矩阵转换成整数类型
imshow(g);
end

?代码中用到的sw函数代码如下:

function A=sw(w1)
w=abs(w1);
a=-0.5;
if w<1&&w>=0
  A=1-(a+3)*w^2+(a+2)*w^3;
else if w>=1&&w<2
  A=a*w^3-5*a*w^2+(8*a)*w-4*a;
else
  A=0;
    end
end
end

?运行结果:

?总结:对比前两种插值方法很明显可以发现双线性插值的效果好于最邻近插值;理论上说三次卷积插值效果要好于前两种,这里不好做比较,就不再谈了。

?

?

?

示例:pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。

  数据结构与算法 最新文章
【力扣106】 从中序与后续遍历序列构造二叉
leetcode 322 零钱兑换
哈希的应用:海量数据处理
动态规划|最短Hamilton路径
华为机试_HJ41 称砝码【中等】【menset】【
【C与数据结构】——寒假提高每日练习Day1
基础算法——堆排序
2023王道数据结构线性表--单链表课后习题部
LeetCode 之 反转链表的一部分
【题解】lintcode必刷50题<有效的括号序列
上一篇文章      下一篇文章      查看所有文章
加:2021-10-09 16:31:36  更:2021-10-09 16:31:48 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/17 13:47:17-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码