没有合适的资源?快使用搜索试试~ 我知道了~
图像的旋转
3星 · 超过75%的资源 需积分: 9 34 下载量 122 浏览量
2008-07-16
23:05:03
上传
评论 2
收藏 20KB TXT 举报
温馨提示
试读
28页
将RGB或其它图像格式对应的3维数组(或灰度图像对应的2维数组)进行旋转,其角度可指定为任意整数值。因为对坐标点进行了浮点运算,因此输出中会出现黑点。使用中值滤波器对这些黑点进行插值。<br>在旋转前,将目标数组进行扩展。可通过一个BOOL参数确定是否将输出裁节为输出结果的外切最小矩形<br>环境 C# VS2005
资源推荐
资源详情
资源评论
public void Matrix_Rotate(//20080624 进行矩阵旋转
//基本功能测试完成于20080625
ref int[, ,] aSour,//RGB图像对应的数组
int xBod, int yBod, int intDrg,//
图像XY边界和角度
bool ifClearBorder,//是否对周围的黑框进行清除
out int xBodOut, out int yBodOut,//输出的图像边界
out int[, ,] aOut)//输出
{
double dubRng = Math.Pow(xBod, 2) + Math.Pow(yBod, 2);
dubRng = Math.Pow(dubRng, 0.5);
int intRng = Convert.ToInt32(dubRng) + 1;
//返回一个内接圆
//三角函数测试段 正确,可用////////////////////////////
//Single LineC = 2.0F,
// LineB = 1.732F;
//Single sngCos = LineB / LineC;
//Single sngArc = Convert.ToSingle(Math.Acos(sngCos) / Math.PI * 180.0F);
//Debug.WriteLine(sngArc);
///////////////////////////////////////////////////
int i, j, k, intHafRng = intRng / 2;
int intCntX = xBod / 2,
intCntY = yBod / 2;
aOut = new int[intRng, intRng, 3];
int i2, j2;
intDrg %= 360;
//基本功能测试完成于20080625
ref int[, ,] aSour,//RGB图像对应的数组
int xBod, int yBod, int intDrg,//
图像XY边界和角度
bool ifClearBorder,//是否对周围的黑框进行清除
out int xBodOut, out int yBodOut,//输出的图像边界
out int[, ,] aOut)//输出
{
double dubRng = Math.Pow(xBod, 2) + Math.Pow(yBod, 2);
dubRng = Math.Pow(dubRng, 0.5);
int intRng = Convert.ToInt32(dubRng) + 1;
//返回一个内接圆
//三角函数测试段 正确,可用////////////////////////////
//Single LineC = 2.0F,
// LineB = 1.732F;
//Single sngCos = LineB / LineC;
//Single sngArc = Convert.ToSingle(Math.Acos(sngCos) / Math.PI * 180.0F);
//Debug.WriteLine(sngArc);
///////////////////////////////////////////////////
int i, j, k, intHafRng = intRng / 2;
int intCntX = xBod / 2,
intCntY = yBod / 2;
aOut = new int[intRng, intRng, 3];
int i2, j2;
intDrg %= 360;
if (intDrg == 270)
{//270度旋转
xBodOut = yBod;
yBodOut = xBod;
aOut = new int[xBodOut, yBodOut, 3];
for (j = 0; j < yBodOut; j++)
{
i2 = yBodOut - j - 1;
for (i = 0; i < xBodOut; i++)
{
j2 = i;
for (k = 0; k < 3; k++)
aOut[i, j, k] = aSour[i2, j2, k];
}
}
goto Out;
}
else if (intDrg == 180)
{
xBodOut = xBod;
yBodOut = yBod;
aOut = new int[xBodOut, yBodOut, 3];
for (j = 0; j < yBodOut; j++)
{
j2 = yBodOut - j - 1;
for (i = 0; i < xBodOut; i++)
{
剩余27页未读,继续阅读
资源评论
- wy1452232012-08-31以为是matlab的,结果是c的。
- dadatoutoutou2013-03-26能够任意角度的旋转图像,很不错,学习一下算法思路。
zhoujk
- 粉丝: 310
- 资源: 3
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功