Top Banner
Sungmin Kim SEOUL NATIONAL UNIVERSITY Digital 3D Anthropometry 10. Advanced Topics Introduction Body Data Analysis 측정 기능 임의의 단면 추출 법선 벡터 지정 좌표 변환 랜드마크 자동 계측 실루엣 추출 주요 랜드마크 찾기 » Crotch » Armpit 2
11

Digital 3D Anthropometryfashiontech.snu.ac.kr/note/BodyMeasurement/10-Advanced Topics.pdf · 정확한치수측정이가능 – Normal vector가임의의각도라면어떨까? (Homework)

Jan 04, 2020

Download

Documents

dariahiddleston
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Digital 3D Anthropometryfashiontech.snu.ac.kr/note/BodyMeasurement/10-Advanced Topics.pdf · 정확한치수측정이가능 – Normal vector가임의의각도라면어떨까? (Homework)

Sungmin Kim

SEOUL NATIONAL UNIVERSITY

Digital 3D Anthropometry

10. Advanced Topics

Introduction Body Data Analysis 측정 기능

임의의 단면 추출

– 법선 벡터 지정– 좌표 변환

랜드마크 자동 계측

– 실루엣 추출– 주요 랜드마크 찾기

» Crotch» Armpit

2

Page 2: Digital 3D Anthropometryfashiontech.snu.ac.kr/note/BodyMeasurement/10-Advanced Topics.pdf · 정확한치수측정이가능 – Normal vector가임의의각도라면어떨까? (Homework)

Data Analysis 임의의 단면 추출 단면의 각도 지정

3

void __fastcall TMainForm::Button7Click(TObject *Sender){if (Body){

AnsiString N=S_NAME->Text;if (N=="") return;if (Body->FindSection(N)!=-1){

Application->MessageBox("Section already exists","Caution",MB_ICONEXCLAMATION|MB_OK);return;}

Body->AddSection(N,Body->PlaneHeight,S_ANGLE->Text.ToDouble());S_LIST->Items->Add(N);Redraw();}

}S_ANGLETEdit

Data Analysis 임의의 단면 추출 단면의 각도 지정

4

void TBodyData::AddSection(AnsiString N,float y,float angle){...NM.Set(0,cos(theta),sin(theta));...TBodySection *S=AddSection(N);S->Angle=angle;...}

class TBodySection{public:

TBodySection();~TBodySection();

AnsiString Name;float Angle;

...

NMy

ztheta

Section

Page 3: Digital 3D Anthropometryfashiontech.snu.ac.kr/note/BodyMeasurement/10-Advanced Topics.pdf · 정확한치수측정이가능 – Normal vector가임의의각도라면어떨까? (Homework)

Data Analysis 임의의 단면 추출 단면의 각도 지정

5

Angle=0 Angle=30

Data Analysis 임의의 단면 추출 단면의 각도 지정

임의 각도 단면 추출의 문제점

6

S_ANGLETEdit

각도에 관계없이 x, z 좌표로만 projection 되는 문제

Page 4: Digital 3D Anthropometryfashiontech.snu.ac.kr/note/BodyMeasurement/10-Advanced Topics.pdf · 정확한치수측정이가능 – Normal vector가임의의각도라면어떨까? (Homework)

Data Analysis 임의의 단면 추출 단면의 각도 지정

3D 와 2D 점을 따로 관리해야 함

7

class TBodySection{public:

...TPoint3D *Point3D,*Point;

...}

TBodySection::TBodySection(){...Point=0;Point3D=0;...}

TBodySection::~TBodySection(){if (Point) delete[]Point;if (Point3D) delete[]Point3D;Point=0;Point3D=0;PointNum=0;...}

void TBodyData::Draw(TOpenGL *GL){if (Model){...

if (ShowSection){for(i=0;i<SectionNum;i++){

GL->DrawPoints(Section[i]->PointNum,Section[i]->Point3D,3,255,0,0);}

}...}

Data Analysis 임의의 단면 추출 단면의 각도 지정

3D 와 2D 점을 따로 관리해야 함

8

void TBodyData::AddSection(AnsiString N,float y,float angle){...S->Point=new TPoint3D[num];S->Point3D=new TPoint3D[num];for(i=0;i<Model->ElemNum;i++){

for(j=0;j<3;j++){k=(j==2) ? 0 : j+1;if (is[i*3+j]){ // 교차한다면

p1=Model->Node[Model->Elem[i*3+j]]-O;p2=Model->Node[Model->Elem[i*3+k]]-O;TPoint3D p=GetIntersection(NM,p1,p2);S->Point3D[S->PointNum]=p+O;

// projected 2D points

float y=p.y*cos(-theta)-p.z*sin(-theta);float z=p.y*sin(-theta)+p.z*cos(-theta);p.Set(p.x,y,z);S->Point[S->PointNum++]=p+O;}

}...}

Page 5: Digital 3D Anthropometryfashiontech.snu.ac.kr/note/BodyMeasurement/10-Advanced Topics.pdf · 정확한치수측정이가능 – Normal vector가임의의각도라면어떨까? (Homework)

Data Analysis 임의의 단면 추출 단면의 각도 지정

정확한 치수 측정이 가능

– Normal vector가 임의의 각도라면 어떨까 ? (Homework)

9

Data Analysis 랜드마크 자동 계측 주요 랜드마크의 자동 계측

메뉴 추가

10

void __fastcall TMainForm::FindLandmarks1Click(TObject *Sender){if (Body){

Body->FindLandmarks();SetInformation();Redraw();}

Page 6: Digital 3D Anthropometryfashiontech.snu.ac.kr/note/BodyMeasurement/10-Advanced Topics.pdf · 정확한치수측정이가능 – Normal vector가임의의각도라면어떨까? (Homework)

Data Analysis 랜드마크 자동 계측 주요 랜드마크의 자동 계측

실루엣 이미지의 추출

11

void TBodyData::GetSilhouette(){Model->GetSize();Graphics::TBitmap *B=new Graphics::TBitmap;B->HandleType=bmDIB; // for image analysisB->PixelFormat=pf24bit;B->Width=Model->Mx-Model->mx;B->Height=Model->My-Model->my;B->Canvas->Pen->Color=clBlack;B->Canvas->Brush->Color=clBlack;TPoint P[3];int i,j;for(i=0;i<Model->ElemNum;i++){

for(j=0;j<3;j++){TPoint3D p=Model->Node[Model->Elem[i*3+j]];P[j].x=(int)(p.x-Model->mx);P[j].y=B->Height-1-(int)(p.y-Model->my);}

B->Canvas->Polygon(P,2);}

B->SaveToFile("silhouette.bmp"); // for testdelete B;}

Data Analysis 랜드마크 자동 계측 주요 랜드마크의 자동 계측

실루엣 외곽선 점 추출

12

void TBodyData::GetSilhouette(){...TPoint2D *point=new TPoint2D[B->Width*B->Height];int num=0;for(i=1;i<B->Height-1;i++){

BYTE *L1=(BYTE*)B->ScanLine[i-1];BYTE *L2=(BYTE*)B->ScanLine[i];BYTE *L3=(BYTE*)B->ScanLine[i+1];for(j=1;j<B->Width-1;j++){

if (L2[j*3]==0){ // black pixelbool edge=false;if (L1[(j-1)*3]==255) edge=true;if (L1[j*3]==255) edge=true;if (L1[(j+1)*3]==255) edge=true;if (L2[(j-1)*3]==255) edge=true;if (L2[(j+1)*3]==255) edge=true;if (L3[(j-1)*3]==255) edge=true;if (L3[j*3]==255) edge=true;if (L3[(j+1)*3]==255) edge=true;

if (edge){point[num].x=Model->mx+j;point[num].y=Model->My-i;num++;}

}}

}FILE *F=fopen("silhouette.csv","w+"); // for testfor(i=0;i<num;i++){

fprintf(F,"%f,%f\n",point[i].x,point[i].y);}

fclose(F);delete[]point;

delete B;}

Page 7: Digital 3D Anthropometryfashiontech.snu.ac.kr/note/BodyMeasurement/10-Advanced Topics.pdf · 정확한치수측정이가능 – Normal vector가임의의각도라면어떨까? (Homework)

Data Analysis 랜드마크 자동 계측 주요 랜드마크의 자동 계측

실루엣 외곽선 점 추출

13

Polar Plot ?

Data Analysis 랜드마크 자동 계측 주요 랜드마크의 자동 계측

실루엣 외곽선을 폐곡선으로 만들기

14

...

// 폐곡선 만들기

if (Silhouette) delete Silhouette;Silhouette=new TBodySection;Silhouette->PointNum=num;Silhouette->Point=new TPoint3D[num];for(i=0;i<num;i++){

Silhouette->Point[i].Set(point[i].x,0,point[i].y);}

Silhouette->Range[0]=-5000;Silhouette->Range[1]=5000;Silhouette->FindClosedPath();

FILE *F=fopen("path.csv","w+"); // for testfor(i=0;i<Silhouette->PathNum;i++){

fprintf(F,"%f,%f\n",Silhouette->Path[i].x,Silhouette->Path[i].y);}

fclose(F);

delete []point;delete B;

Page 8: Digital 3D Anthropometryfashiontech.snu.ac.kr/note/BodyMeasurement/10-Advanced Topics.pdf · 정확한치수측정이가능 – Normal vector가임의의각도라면어떨까? (Homework)

Data Analysis 랜드마크 자동 계측 주요 랜드마크의 자동 계측

원점에서 외곽선까지의 거리를 그래프로 나타내보기

15

void TBodyData::FindLandmarks(){GetSilhouette();int i;FILE *F=fopen("polarcoord.csv","w+");for(i=0;i<Silhouette->PathNum;i++){

fprintf(F,"%f\n",Silhouette->Path[i].Length());}

fclose(F);}

Armpit

Crotch

float TPoint2D::Length(){return sqrt(x*x+y*y);}

Data Analysis 랜드마크 자동 계측 주요 랜드마크의 자동 계측

Crotch 점 찾기

16

void TBodyData::FindLandmarks(){GetSilhouette();

// Find Crotch

int i,Crotch;float d,MinD=10000;for(i=0;i<Silhouette->PathNum;i++){

d=Silhouette->Path[i].Length();if (d<MinD){

MinD=d;Crotch=i;}

}TBodyLandmark *L=AddLandmark("Crotch");L->Position=FindNearestPoint(Silhouette->Path[Crotch]);}

TPoint3D TBodyData::FindNearestPoint(TPoint2D p){int i,MinP;TPoint3D P;P.Set(p.x,p.y,0);float d,MinD=10000;for(i=0;i<Model->NodeNum;i++){

d=P.Distance(Model->Node[i]);if (d<MinD){

MinD=d;MinP=i;}

}return Model->Node[MinP];}

Page 9: Digital 3D Anthropometryfashiontech.snu.ac.kr/note/BodyMeasurement/10-Advanced Topics.pdf · 정확한치수측정이가능 – Normal vector가임의의각도라면어떨까? (Homework)

Data Analysis 랜드마크 자동 계측 주요 랜드마크의 자동 계측

Crotch 점 찾기

17

Data Analysis 랜드마크 자동 계측 주요 랜드마크의 자동 계측

Armpit점 찾기

18

Crotch대략적인 범위설정

0.45N~065N ?

대략적인 범위설정

1.35N~1.55N ?

N

Page 10: Digital 3D Anthropometryfashiontech.snu.ac.kr/note/BodyMeasurement/10-Advanced Topics.pdf · 정확한치수측정이가능 – Normal vector가임의의각도라면어떨까? (Homework)

Data Analysis 랜드마크 자동 계측 주요 랜드마크의 자동 계측

Armpit점 찾기

19

// Find Armpit

int RArmpit=FindPeak(Crotch,0.45,0.65);L=AddLandmark("R Armpit");L->Position=FindNearestPoint(Silhouette->Path[RArmpit]);int LArmpit=FindPeak(Crotch,1.35,1.55);L=AddLandmark("L Armpit");L->Position=FindNearestPoint(Silhouette->Path[LArmpit]);}

int TBodyData::FindPeak(int N,float s,float e){int i,MaxP;int S=(int)((float)N*s);int E=(int)((float)N*e);float d,MaxD=-10000;for(i=S;i<E;i++){

d=Silhouette->Path[i].Length();if (d>MaxD){

MaxD=d;MaxP=i;}

}return MaxP;}

Data Analysis 랜드마크 자동 계측 주요 랜드마크의 자동 계측

Armpit점 찾기

– 다른 점도 찾을 수 있지 않을까 ? (Homework)

20

Page 11: Digital 3D Anthropometryfashiontech.snu.ac.kr/note/BodyMeasurement/10-Advanced Topics.pdf · 정확한치수측정이가능 – Normal vector가임의의각도라면어떨까? (Homework)

Homework Chapter 4

TModel3D 를 써서 구 (Sphere) 모델링하기

ASCII 타입의 OBJ 파일을 읽어오기

Chapter 7

단면의 높이를 지정하는 UI 를 개선해보기

Chapter 10

임의 각도 단면의 측정

추가 랜드마크 찾기

프로그램의 최종 소스파일을 zip 파일로 묶어서 제출

21