图像像素灰度内插(Matlab实现)
常用的像素灰度内插法:最近邻元法、双线性内插法、三次内插法
%%像素灰度内插
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实现)的更多相关文章
- 图像三维灰度分布图——matlab
p=imread('C:\Users\wangd\Documents\MATLAB\1.jpg'); g=rgb2gray(p); % 转为灰阶图 gg=double(g); % 转为数值矩阵 gg= ...
- DICOM图像像素值(灰度值)转换为CT值
CT值的单位是Hounsfield,简称为Hu,范围是-1024-3071.用于衡量人体组织对X射线的吸收率,设定水的吸收率为0Hu. 在DICOM图像读取的过程中,我们会发现图像的像素值有可能不是这 ...
- C#中的bitmap类和图像像素值获取方法
一.Bitmap类 Bitmap对象封装了GDI+中的一个位图,此位图由图形图像及其属性的像素数据组成.因此Bitmap是用于处理由像素数据定义的图像的对象.该类的主要方法和属性如下: 1. GetP ...
- c#图像处理入门(-bitmap类和图像像素值获取方法) 转
一.Bitmap类 Bitmap对象封装了GDI+中的一个位图,此位图由图形图像及其属性的像素数据组成.因此Bitmap是用于处理由像素数据定义的图像的对象.该类的主要方法和属性如下: 1. GetP ...
- c#图像处理入门(-bitmap类和图像像素值获取方法)
c#图像处理入门 -bitmap类和图像像素值获取方法 一.Bitmap类 Bitmap对象封装了GDI+中的一个位图,此位图由图形图像及其属性的像素数据组成.因此Bitmap是用于处理由像素数据定义 ...
- 基于FPGA的RGB图像转灰度图像算法实现
一.前言 最近学习牟新刚编著<基于FPGA的数字图像处理原理及应用>的第六章直方图操作,由于需要将捕获的图像转换为灰度图像,因此在之前代码的基础上加入了RGB图像转灰度图像的算法实现. 2 ...
- opencv学习笔记(八)IplImage* 访问图像像素的值
opencv2.1版本之前使用IplImage*数据结构来表示图像,2.1之后的版本使用图像容器Mat来存储.IplImage结构体如下所示. typedef struct _IplImage { i ...
- opencv图像像素值读取
说到图像像素,肯定要先认识一下图像中的坐标系长什么样. 1. 坐标体系中的零点坐标为图片的左上角,X轴为图像矩形的上面那条水平线:Y轴为图像矩形左边的那条垂直线.该坐标体系在诸如结构体Mat,Rect ...
- opencv——图像的灰度处理(线性变换/拉伸/直方图/均衡化)
实验内容及实验原理: 1.灰度的线性变换 灰度的线性变换就是将图像中所有的点的灰度按照线性灰度变换函数进行变换.该线性灰度变换函数是一个一维线性函数:f(x)=a*x+b 其中参数a为线性函数的斜率, ...
随机推荐
- 20145239杜文超 《Java程序设计》第7周学习总结
20145239 <Java程序设计>第7周学习总结 教材学习内容总结 Lambda 认识Lambda语法 Lambda语法概述: Arrays的sort()方法可以用来排序,在使用sor ...
- 图形绘制处理逻辑VC
// 逻辑1:先从资源中读取背景资源,然后将绘图对象与DC绑定,通过绘图对象绘出背景 // 逻辑2:先从资源中读取背景资源,新建一个MEMDC,将绘图对象与MEMDC绑定,并且 // 通过绘图对象在内 ...
- 51nod 1610
题目 神犇题解 所以说鄙人的姿势水平完全不够啊OTZ. 很naive的想法是O(T*v*m)的,据说卡一卡可以过去.题目要求的东西其实是这个: $ \sum\limits_{i = 1}^v {\mu ...
- github添加ssh公钥
使用git作为版本维护工具非常方便,而且一般个人用github作为远端库就够用了.而一般git连接github的方式采用ssh的方法,http的会略微慢一些.所以为了方便一般会在github设置中添加 ...
- array_2.array_rand
从数组中随机取出一个或多个单元 <?php $arr = [1, 2, 3]; $rand = array_rand($arr, 2); var_dump($rand);
- [Shell]grep命令
我是好文章的搬运工,原文来自ChinaUnix,博主scq2099yt,地址:http://blog.chinaunix.net/uid-22312037-id-4217835.html 一.基本用法 ...
- P1880 [NOI1995]石子合并[区间dp+四边形不等式优化]
P1880 [NOI1995]石子合并 丢个地址就跑(关于四边形不等式复杂度是n方的证明) 嗯所以这题利用决策的单调性来减少k断点的枚举次数.具体看lyd书.这部分很生疏,但是我还是选择先不管了. # ...
- ACM学习历程—POJ1151 Atlantis(扫描线 && 线段树)
Description There are several ancient Greek texts that contain descriptions of the fabled island Atl ...
- Trie 树内存消耗问题
大家都知道,Trie树(又称字典树)是一种树型数据结构,用于保存大量的字符串.它的优点是:利用字符串的公共前缀来节约存储空间. 相对来说,Trie树是一种比较简单的数据结构,比较易于理解.话说上帝是公 ...
- Wmware Player中Linux挂载U盘
菜单(Player)中有一项是可移动设备,中选择U盘,然后选择连接(断开主机), 然后在命令行中敲入 fdisk -l 正常情况下是sda是硬盘的信息,然后将会看到一个单蹦的sdb4的信息(sdb4可 ...