intTypePromotion=1
zunia.vn Tuyển sinh 2024 dành cho Gen-Z zunia.vn zunia.vn
ADSENSE

Biên và các phương pháp dò biên ảnh part 3

Chia sẻ: Asg Ahsva | Ngày: | Loại File: PDF | Số trang:5

152
lượt xem
55
download
 
  Download Vui lòng tải xuống để xem tài liệu đầy đủ

Tham khảo tài liệu 'biên và các phương pháp dò biên ảnh part 3', văn hoá - nghệ thuật, điêu khắc - hội họa phục vụ nhu cầu học tập, nghiên cứu và làm việc hiệu quả

Chủ đề:
Lưu

Nội dung Text: Biên và các phương pháp dò biên ảnh part 3

  1. Tiểu l uận môn xử lý ảnh - Biên và các phương pháp dò biên long Gx[3][3]; long Gy[3][3]; Gx[0][0] = -1; Gx[0][1] = 0; Gx[0][2] = 1; Gx[1][0] = -2; Gx[1][1] = 0; Gx[1][2] = 2; Gx[2][0] = -1; Gx[2][1] = 0; Gx[2][2] = 1; /* 3x3 GY Sobel mask. Ref: www.cee.hw.ac.uk/hipr/html/sobel.html */ Gy[0][0] = -1; Gy[0][1]=-2; Gy[0][2] =-1; Gy[1][0] = 0; Gy[1][1] = 0; Gy[1][2] = 0; Gy[2][0] = 1; Gy[2][1] = 2; Gy[2][2] = 1; if(Gradient(Gx,Gy)==false) AfxMessageBox("Khong co du lieu anh");; U pdateAllViews(NULL); } bool CDemo3Doc::Laplace(long G[3][3]) { //neu khong co du lieu anh if(!image->GetDIB()) return false; // Gradient Algorithm long sum; // long sumx; long x,y; //long r,g,b; long i,j,g; //RGBQUAD c; //CxImage tmp; B YTE cindex; C xImage tmp; tmp.Copy (*image); long xmin,xmax,ym in,ymax; xmin = ymin = 0; xmax =(long) image->GetWidth(); ymax=(long)image->GetHeight(); //neu anh la 8bit/1pixel if ((image->GetBpp() ==8) || (image->GetBpp() ==4)) { for(y=ymin; y
  2. Tiểu l uận môn xử lý ảnh - Biên và các phương pháp dò biên { s um=0; //kiem tra toa do x,y co nam trong anh hay khong if (image->SelectionIsInside(x,y)) { //xu ly cac toa do o duong vien anh if(y==0 || y == ymax-1) s um=0; else if(x==0 || x==xmax-1) s um=0; //tinh xap xi laplace else { //tinh theo chieu x for( i=-1; iTransfer(LamManhBien(&tmp)); Trang 22/25
  3. Tiểu l uận môn xử lý ảnh - Biên và các phương pháp dò biên image->Transfer(tmp); return true; } v oid CDemo3Doc::OnMethodLaplace() { // TODO: Add your command handler code here if (image==0) return; if (!image->IsValid()) return; long Gx[3][3]; Gx[0][0] = -1; Gx[0][1] =-1; Gx[0][2]= -1; Gx[1][0] = -1; Gx[1][1] = 8; Gx[1][2]= -1; Gx[2][0] = -1; Gx[2][1] =-1; Gx[2][2]= -1; if(Laplace(Gx)==false) AfxMessageBox("Khong co du lieu anh"); U pdateAllViews(NULL); } bool CDemo3Doc::DoBien() { //neu khong co du lieu anh if(!image->GetDIB()) return false; // long sum; // long sumx; long x,y; long d1,d2,d3,d4,d5,d6,d7,d8; // long r,g,b; // long i,j; //RGBQUAD c; //CxImage tmp; //BYTE cindex; RGBQUAD c,c1,c2,c3,c4,c5,c6,c7,c8; RGBQUAD bc; int dis_min=0; //CoArray C xImage tmp; tmp.Copy (*image); Trang 23/25
  4. Tiểu l uận môn xử lý ảnh - Biên và các phương pháp dò biên long xmin,xmax,ymin,ymax; xmin = ymin = 0; xmax =(long) image->GetWidth(); ymax=(long)image->GetHeight(); for(y=ymin; yGetBpp() ==8) || (image->GetBpp() ==4)) { for(y=ymin; yGetPixelIndex (x,y)==image->GetPixelIndex (0,0)) { c 1=image->GetPixelColor(x-1,y); c 2=image->GetPixelColor(x+1,y); c 3=image->GetPixelColor(x,y-1); c 4=image->GetPixelColor(x,y+1); c 5=image->GetPixelColor(x-1,y-1); c 6=image->GetPixelColor(x+1,y+1); c 7=image->GetPixelColor(x+1,y-1); c 8=image->GetPixelColor(x-1,y+1); //tinh khoang c ach giua hai mau d1=abs(c.rgbRed-c1.rgbRed)+abs(c.rgbGreen - c1.rgbGreen)+ abs(c.rgbBlue -c1.rgbBlue ); d2=abs(c.rgbRed-c2.rgbRed)+abs(c.rgbGreen - c2.rgbGreen)+ abs(c.rgbBlue -c2.rgbBlue ); d3=abs(c.rgbRed-c3.rgbRed)+abs(c.rgbGreen - c3.rgbGreen)+ abs(c.rgbBlue -c3.rgbBlue ); d4=abs(c.rgbRed-c4.rgbRed)+abs(c.rgbGreen - c4.rgbGreen)+ abs(c.rgbBlue -c4.rgbBlue ); Trang 24/25
  5. Tiểu l uận môn xử lý ảnh - Biên và các phương pháp dò biên d5=abs(c.rgbRed-c5.rgbRed)+abs(c.rgbGreen - c5.rgbGreen)+ abs(c.rgbBlue -c5.rgbBlue ); d6=abs(c.rgbRed-c6.rgbRed)+abs(c.rgbGreen - c6.rgbGreen)+ abs(c.rgbBlue -c6.rgbBlue ); d7=abs(c.rgbRed-c7.rgbRed)+abs(c.rgbGreen - c7.rgbGreen)+ abs(c.rgbBlue -c7.rgbBlue ); d8=abs(c.rgbRed-c8.rgbRed)+abs(c.rgbGreen - c8.rgbGreen)+ abs(c.rgbBlue -c8.rgbBlue ); if(d1>dis_min || d2>dis_min || d3>dis_min || d4>dis_min || d5>dis_min ||d6>dis_min||d7>dis_min ||d8>dis_min) { //dat mau den tai cac diem bien bc=tmp.GetPixelColor(x,y-1); //neu diem truoc la diem bien if(bc.rgbBlue==0 ||bc.rgbGreen ==0 || bc.rgbRed ==0 ) { tmp.SetPixelColor(x,y,RGB(0,0,0)); } else { tmp.SetPixelColor(x,y,RGB(0,0,0)); } // } } } } } image->Transfer(tmp); return true; } v oid CDemo3Doc::OnIndirectMethod() { // TODO: Add your command handler code here D oBien(); U pdateAllViews(NULL); } Trang 25/25
ADSENSE

CÓ THỂ BẠN MUỐN DOWNLOAD

 

Đồng bộ tài khoản
2=>2