常用的像素灰度内插法:最近邻元法、双线性内插法、三次内插法

%%像素灰度内插
factor = 0.75;%缩放比
u = 0.6;v = 0.7;
itp1 = uint8(zeros(ceil(h/factor),ceil(w/factor)));
itp2 = uint8(zeros(ceil(h/u),ceil(w/v)));
itp3 = uint8(zeros(ceil(h/u),ceil(w/v)));

下述的J3为待插值灰度图像,itp为插值图像

1.最近邻元法

在待求像素的四邻像素中,将距离这点最近的邻像素灰度赋给待求像素。

%最近邻元法
for i = :h/factor
for j = :w/factor
itp1(i,j) = J3(floor(i*factor+0.5),floor(j*factor+0.5));
end
end

2.双线性内插法

%双线性内插法
for i = :h/u-
for j = :w/v-
itp2(i,j) = (-(i*u-floor(i*u)))*(-(j*v-floor(j*v)))*J3(floor(i*u),floor(j*v))...
+(-(i*u-floor(i*u)))*(j*v-floor(j*v))*J3(floor(i*u),floor(j*v)+)...
+(i*u-floor(i*u))*(-(j*v-floor(j*v)))*J3(floor(i*u)+,floor(j*v))...
+(i*u-floor(i*u))*(j*v-floor(j*v))*J3(floor(i*u)+,floor(j*v)+); end
end

3.三次内插法

function [f] = S(x)
if (0<=abs(x))&&(abs(x)<1)
    f = 1-2*(abs(x))^2+(abs(x))^3;
elseif (1<=abs(x))&&(abs(x)<2)
    f = 4-8*abs(x)+5*(abs(x))^2-(abs(x))^3;
else
    f = 0;
end
end %三次内插法
f = double(J3);
u = 0.6;v = 0.7;
for i = ceil(/u):h/u-
for j = ceil(/v):w/v-
A = [S(+(j*v-floor(j*v))) S((j*v-floor(j*v))) S(-(j*v-floor(j*v))) S(-(j*v-floor(j*v)))];
C = [S(+(i*u-floor(i*u)));S((i*u-floor(i*u)));S(-(i*u-floor(i*u)));S(-(i*u-floor(i*u)))];
i1 = floor(i*u); j1 = floor(j*v);
B = [f(i1-,j1-) f(i1-,j1) f(i1-,j1+) f(i1-,j1+);
f(i1,j1-) f(i1,j1) f(i1,j1+) f(i1,j1+);
f(i1+,j1-) f(i1+,j1) f(i1+,j1+) f(i1+,j1+);
f(i1+,j1-) f(i1+,j1) f(i1+,j1+) f(i1+,j1+);];
itp3(i,j) = A*B*C;
end
end

上述的内插法处理的结果出现了黑边,可以通过将黑边区域赋予原始图像的对应区域的像素灰度值。

可通过以下循环实现。

%去黑边
[m,n] = size(J3);%原始图像的行列数 for i = :floor(1/u)
for j = :floor(n/v)
itp(i,j) = J3(ceil(i*u),ceil(j*v));
itp(floor(m/u),j) = J3(m,ceil(j*v));
end
end
for j = :floor(1/v)
for i = :floor(m/u)
itp(i,j) = J3(ceil(i*u),ceil(j*v));
itp(i,floor(n/v)) = J3(ceil(i*u),n);
end
end

图像像素灰度内插(Matlab实现)的更多相关文章

  1. 图像三维灰度分布图——matlab

    p=imread('C:\Users\wangd\Documents\MATLAB\1.jpg'); g=rgb2gray(p); % 转为灰阶图 gg=double(g); % 转为数值矩阵 gg= ...

  2. DICOM图像像素值(灰度值)转换为CT值

    CT值的单位是Hounsfield,简称为Hu,范围是-1024-3071.用于衡量人体组织对X射线的吸收率,设定水的吸收率为0Hu. 在DICOM图像读取的过程中,我们会发现图像的像素值有可能不是这 ...

  3. C#中的bitmap类和图像像素值获取方法

    一.Bitmap类 Bitmap对象封装了GDI+中的一个位图,此位图由图形图像及其属性的像素数据组成.因此Bitmap是用于处理由像素数据定义的图像的对象.该类的主要方法和属性如下: 1. GetP ...

  4. c#图像处理入门(-bitmap类和图像像素值获取方法) 转

    一.Bitmap类 Bitmap对象封装了GDI+中的一个位图,此位图由图形图像及其属性的像素数据组成.因此Bitmap是用于处理由像素数据定义的图像的对象.该类的主要方法和属性如下: 1. GetP ...

  5. c#图像处理入门(-bitmap类和图像像素值获取方法)

    c#图像处理入门 -bitmap类和图像像素值获取方法 一.Bitmap类 Bitmap对象封装了GDI+中的一个位图,此位图由图形图像及其属性的像素数据组成.因此Bitmap是用于处理由像素数据定义 ...

  6. 基于FPGA的RGB图像转灰度图像算法实现

    一.前言 最近学习牟新刚编著<基于FPGA的数字图像处理原理及应用>的第六章直方图操作,由于需要将捕获的图像转换为灰度图像,因此在之前代码的基础上加入了RGB图像转灰度图像的算法实现. 2 ...

  7. opencv学习笔记(八)IplImage* 访问图像像素的值

    opencv2.1版本之前使用IplImage*数据结构来表示图像,2.1之后的版本使用图像容器Mat来存储.IplImage结构体如下所示. typedef struct _IplImage { i ...

  8. opencv图像像素值读取

    说到图像像素,肯定要先认识一下图像中的坐标系长什么样. 1. 坐标体系中的零点坐标为图片的左上角,X轴为图像矩形的上面那条水平线:Y轴为图像矩形左边的那条垂直线.该坐标体系在诸如结构体Mat,Rect ...

  9. opencv——图像的灰度处理(线性变换/拉伸/直方图/均衡化)

    实验内容及实验原理: 1.灰度的线性变换 灰度的线性变换就是将图像中所有的点的灰度按照线性灰度变换函数进行变换.该线性灰度变换函数是一个一维线性函数:f(x)=a*x+b 其中参数a为线性函数的斜率, ...

随机推荐

  1. hello vue不显示

    本身是做java后端开发的,但对任何技术都感兴趣.于是尝试了下最近国内比较火的vue框架. 在使用官网的例的时候子就卡壳了,写了个html,第一个Hello VUE!就是出不来,只显示{{messag ...

  2. 时尚设计div+css免费模板

    时尚设计div+css免费网页模板,时尚设计,div+css. http://www.huiyi8.com/moban/

  3. html5--2.3新的布局元素(2)-article

    html5--2.3新的布局元素(2)-article 学习要点 了解article元素的语义和用法 完成一个简单的实例 article元素(标签) 用于定义一个独立的内容区块,比如一篇文章,一篇博客 ...

  4. db2move 数据导出整理

    db2move <database-name> <action> [<option>   <value>] 命令解释:1).database-name, ...

  5. PS滤镜— —波浪效果

    clc; clear all; close all; addpath('E:\PhotoShop Algortihm\Image Processing\PS Algorithm'); I=imread ...

  6. [acm]HDOJ 3082 Simplify The Circuit

    题目地址: http://acm.hdu.edu.cn/showproblem.php?pid=3082 字符串处理+并联电阻公式 //11481261 2014-08-18 16:52:47 Acc ...

  7. java-05 面向对象

    class StudentDemo { String name; int age; String address; public void study(){ System.out.println(&q ...

  8. BZOJ_2957_楼房重建_线段树

    BZOJ_2957_楼房重建_线段树 Description 小A的楼房外有一大片施工工地,工地上有N栋待建的楼房.每天,这片工地上的房子拆了又建.建了又拆.他经常无聊地看着窗外发呆,数自己能够看到多 ...

  9. 【Python】String 字符串

    1. split() split()通过指定分隔符对字符串进行切片,如果参数num 有指定值,则仅分隔 num 个子字符串 split()方法语法:str.split(str="" ...

  10. bzoj 3232 圈地游戏——0/1分数规划(或网络流)

    题目:https://www.lydsy.com/JudgeOnline/problem.php?id=3232 当然是0/1分数规划.但加的东西和减的东西不在一起,怎么办? 考虑把它们合在一起.因为 ...