91av视频/亚洲h视频/操亚洲美女/外国一级黄色毛片 - 国产三级三级三级三级

  • 大小: 9KB
    文件類型: .zip
    金幣: 2
    下載: 0 次
    發(fā)布日期: 2021-05-10
  • 語言: 其他
  • 標(biāo)簽: B樣條??

資源簡介

B樣條算法是對圖像進行插值,其效果比一般的算法要好很多,此資源為源代碼

資源截圖

代碼片段和文件信息

#include
#include
#include

#include
#include“bspline.h“

#pragma?comment?(lib“cv210.lib“)
#pragma?comment?(lib“cxcore210.lib“)
#pragma?comment?(lib“highgui210.lib“)

void?B_SPLine::InitMouseControlPoint(char?*windowNameIplImage?*img)
{
cvZero(img);
m_MouseParam.img=img;
m_MouseParam.pclass=this;
cvSetMouseCallback(windowNameMouseCallback(void?*)&m_MouseParam);
}

void?B_SPLine::DrawBSPLine(IplImage?*img)
{
int?xy;
unsigned?char?*p;
float?u;
std::list::iterator?iter;

cvZero(img);
ControlPoint?result;
for(iter=m_ControlPoints.begin();iter!=m_ControlPoints.end();++iter)
{
p=(unsigned?char?*)(img->imageData+iter->point.x*img->nChannels+iter->point.y*img->widthStep);
*p=255;
}

for(u=0;u<1.0;u+=0.002)
{
GetBSPLine(u&result);
p=(unsigned?char?*)(img->imageData+result.point.x*img->nChannels+result.point.y*img->widthStep);
*p=128;
}
}

void?B_SPLine::GetURegion(float?u)
{
int?iN;
N=m_ControlPoints.size();
m_DeltaU=1.0/N;
m_LowerBoundIdx=(int)(u/m_DeltaU);
m_LowerBound=m_LowerBoundIdx*m_DeltaU;
m_UpperBound=m_DeltaU+m_LowerBound;
}

bool?B_SPLine::GetBSPLine(float?u?ControlPoint?*result)
{
int?i;
float?*pN;
float?tmpxtmpy;

std::list::iterator?iter;
//獲取u所在區(qū)間
GetURegion(u);
//清零結(jié)果結(jié)構(gòu)體中的所有變量值
tmpx=0;
tmpy=0;
//根據(jù)u更新所有有關(guān)的B樣條基函數(shù)
CalcNiku(u);
//計算B樣條曲線對應(yīng)于u的值
i=(m_K+1)*m_K/2;
pN=m_Niku+i;

if(m_LowerBoundIdx>=m_K)
{
for(iter=m_ControlPoints.begin()i=0;i {
;
}
for(i=0;i<=m_K;++i++iter)
{
tmpx+=iter->point.x*pN[m_K-i];
tmpy+=iter->point.y*pN[m_K-i];
//printf(“(%f%f)-“tmpxtmpy);
}
}
else
{
pN=pN+m_K;
for(iter=m_ControlPoints.end()i=m_K-m_LowerBoundIdx;i>0;i--)
{
--iter;
}
for(;iter!=m_ControlPoints.end();++iter)
{
tmpx+=iter->point.x**pN;
tmpy+=iter->point.y**pN;
--pN;
}
for(iter=m_ControlPoints.begin()i=0;i<=m_LowerBoundIdx;++iter++i)
{
tmpx+=iter->point.x**pN;
tmpy+=iter->point.y**pN;
--pN;
}
}
result->point.x=tmpx;
result->point.y=tmpy;
//getchar();
return?TRUE;
}

void?B_SPLine::CalcNiku(float?u)
{
int?kl;
float?*pN;
float?tmp1tmp2;
int?N;

N=m_ControlPoints.size();

pN=m_Niku;
*pN=1;
++pN;
for(k=1;k<=m_K;++k)
{
for(l=0;l<=k;++l)
{
if(l==0)
{
tmp1=GetNiku(0k-1);
*pN=(u-m_LowerBound)/k/m_DeltaU*tmp1;
}
else?if(l==k)
{
tmp1=GetNiku(l-1k-1);
*pN=(m_UpperBound-u)/k/m_DeltaU*tmp1;
}
else
{
tmp1=GetNiku(lk-1);
tmp2=GetNiku(l-1k-1);
*pN=(u-m_LowerBound+l*m_DeltaU)*tmp1+(m_UpperBound+(k-l)*m_DeltaU-u)*tmp2;
tmp1=k*m_DeltaU;
*pN/=tmp1;
}
//printf(“l(fā)--%dk--%d%f\n“l(fā)k*pN);
//getchar();
++pN;
}
}
}


B_SPLine::B_SPLine(int?k)
{
int?tmp;
m_K=k;
tmp=(k+1)*(k+2)/2;
m_Niku=new?float[tmp

?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????目錄???????????0??2012-03-22?19:40??B樣條\
?????文件????????4072??2012-03-20?16:05??B樣條\bspline.cpp
?????文件????????1459??2012-03-17?09:55??B樣條\bspline.h
?????文件????????4022??2012-03-17?10:30??B樣條\bspline.vcproj
?????文件????????1427??2012-03-20?17:00??B樣條\bspline.vcproj.WWW-F94CB748A28.Administrator.user
?????文件????????6283??2012-03-20?16:53??B樣條\bsplineinter.cpp
?????文件?????????647??2012-03-20?16:21??B樣條\bsplineinter.h
?????文件????????6032??2012-03-17?10:33??B樣條\intFIFO.cpp
?????文件?????????831??2012-03-17?10:33??B樣條\intfifo.h
?????文件????????3125??2012-03-20?16:45??B樣條\test.cpp

評論

共有 條評論