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

Chia sẻ: myxaodon09

Tham khảo tài liệu 'biên và các phương pháp dò biên ảnh part 2', 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ả

Bạn đang xem 7 trang mẫu tài liệu này, vui lòng download file gốc để xem toàn bộ.

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

 

  1. Tiểu l uận môn xử lý ảnh - Biên và các phương pháp dò biên Đ ể dễ hiểu, phần dưới đây sẽ minh hoạ thêm về giải thuật này: Ma trận ảnh vào Mặt nạ a11 a12 a13 .... a1n m11 m12 m13 a21 a22 a23 .... a2n m21 m22 m23 a31 a32 a33 .... a3n m31 m32 m33 .. .. .. .. Ma trận ảnh ra sau khi nhân chập b11 b12 b13 .... b1n b21 b22 b23 .... b2n b31 b32 b33 .... b3n .. .. .. .. Trong đó: b22=(a11*m11)+ (a12*m12)+ (a12*m13)+ (a21*m21) + (a22*m22) + (a23*m23) + (a31*m31)+ (a32*m32)+ (a33*m33). C ác giá trị nằm trên đường v iền được gán =0 (hay giá trị m àu nền). (b11,b12,...b1n,b11....bn1,b1n...bnn, bn1...bnn) Đ ây là công thức tính Gx và Gy Đ ể tính giá trị điểm ảnh đầu ra, s ử dụng công thức: G=|Gx|+ |Gy| 2 .3.2. Phương pháp dò biên theo kỹ thuật Laplace Kỹ thuật Laplace dò biên theo cách tính xấp xỉ đạo hàm bậc hai dựa trên m ột mặt nạ. Chương trình sử dụng mặt nạ H2 trong cách dò biên theo k ỹ thuật Laplace. -1 -1 -1 H2= 8 -1 -1 -1 -1 -1 Trang 11/25
  2. Tiểu l uận môn xử lý ảnh - Biên và các phương pháp dò biên G ọi G là ma trận điểm thu được sau khi nhân chập ma trận điểm ảnh (của ảnh cần tìm biên)v ới mặt nạ H2. G chính là ma trận điểm ảnh chứa các đường biên cần tìm .  Thuật toán dò biên theo phương pháp Gradient như sau: Đầu v ào: ma trận ảnh cần tìm biên: m ặt nạ H2 Đầu ra: Một ma trận ảnh (chứa các đường biên được tìm thấy). Giải thuật // Laplace Algorithm For (mỗi điểm ảnh của ảnh) if(Nếu điểm ảnh nẳm trên đường v iền ảnh) G án giá trị các điểm ảnh trên đường v iền ảnh =0 (hoặc bằng màu nền ảnh). else { - Tính xấp xỉ Laplace G: nhân chập với mặt nạ I1 - N ếu giá trị đ iểm ảnh lớn hơn chỉ số màu của ảnh thì gán giá trị ảnh là giá trị m àu lớn nhất. } 2 .3.3. Phương pháp dò biên gián tiếp D ựa trên kỹ thuật phân vùng ảnh, Phương pháp này dò biên theo sự thay đổi m ức xám m àu của ảnh. N ếu những điểm ảnh nào có cùng màu hoặc c ó màu khác nhưng khoảng cách màu nằm trong phạm v i cho phép, đồng thời nằm kề nhau sẽ tạo thành một vùng.  Định nghĩa khoảng cách màu: Khoảng c ách màu là m ột khái niệm để chỉ sự khác nhau về giá trị màu của các điểm ảnh. Giả sử a và b là 2 giá trị m àu của 2 điểm ảnh. Khoảng c ách m àu d c ủa a và b được tính như sau: d(a,b)=|Ra-Rb| + |Ga-Gb| + |Ba-Bb| Trong đó Ra: là giá trị m àu đỏ tại điểm ảnh Ga: là giá trị m àu xanh (green)tại điểm ảnh Ba: là giá trị m àu xanh da trời (blue) tại đ iểm ảnh. Nếu k hoảng cách màu d=0 thì 2 điểm ảnh đó có cùng m àu. Đường biên giữ các vùng chính là các đường biên cần tìm . Trang 12/25
  3. Tiểu l uận môn xử lý ảnh - Biên và các phương pháp dò biên  Thuật toán tìm đư ờng biên dựa trên sự biến thiên giá trị màu của các điểm ảnh. Đầu v ào: Ma trận điểm ảnh, khoảng cách màu tối thiểu Đầu ra: Ma trận điểm ảnh m ới (chứa các đường biên tìm thấy). Giải thuật: For (mỗi điểm ảnh của ảnh) { - Tính khoảng cách màu của điểm ảnh v ới c ác điểm ảnh lân c ận: Tính theo 8 hướng của điểm ảnh if(N ếu có một khoảng cách màu lớn hơn khoảng cách màu cho phép) { - Ghi nhận điểm ảnh này là m ột điểm biên m ới. } } 2.4. C hương trình 2 .4.1. Giao diện và các chức năng chính Màn hình chính khi chạy có giao diện như sau: Trang 13/25
  4. Tiểu l uận môn xử lý ảnh - Biên và các phương pháp dò biên 2 .4.2. Chức nă ng Gradient  Bao gồm hai chức năng: o Sobel o Prewitt  Kết quả dò biên theo kỹ thuật Gradient với toán tử Sobel  Kết quả dò biên theo kỹ thuật Gradient với toán tử Sobel Trang 14/25
  5. Tiểu l uận môn xử lý ảnh - Biên và các phương pháp dò biên N hận xét:  Khi áp dụng hai toán tử này cho ta c ùng m ột kết quả tương tự nhau  Phương pháp này tạo nên đường biên rất đậm 2 .4.3. Chức nă ng Laplace C hức năng này bao gồm  c hức năng Laplace -h2: sử dựng mặt nạ H2  Kết quả dò biên theo kỹ thuật Laplace Trang 15/25
  6. Tiểu l uận môn xử lý ảnh - Biên và các phương pháp dò biên 2 .4.4. Chức nă ng dò b iên gián tiếp(Indirect Method)  Kết quả dò biên theo phương pháp này Trang 16/25
  7. Tiểu l uận môn xử lý ảnh - Biên và các phương pháp dò biên 2.5. Một số hàm và thủ tục chính v oid CDemo3Doc::OnMethodSobel() { // TODO: Add your command handler code here if (image==0) return; if (!image->IsValid()) return; long Gx[3][3]; long Gy[3][3]; Gx[0][0] = -1; Gx[0][1] = 0; Gx[0][2] = 1; Gx[1][0] = -1; Gx[1][1] = 0; Gx[1][2] = 1; Gx[2][0] = -1; Gx[2][1] = 0; Gx[2][2] = 1; Gy[0][0] = -1; Gy[0][1] = -1; Gy[0][2] = -1; Gy[1][0] = 0; Gy[1][1] = 0; Gy[1][2] = 0; Gy[2][0] = 1; Gy[2][1] = 1; Gy[2][2] = 1; Gradient(Gx,Gy); // image->Filter(kernel,3,16,0); U pdateAllViews(NULL); } Trang 17/25
  8. Tiểu l uận môn xử lý ảnh - Biên và các phương pháp dò biên bool CDemo3Doc::Gradient(long Gx[3][3], long Gy[3][3]) { //neu khong co du lieu anh if(!image->GetDIB()) return false; // Gradient Algorithm long sum; long sumx,sumy;//gia tri tinh gx, gy long x,y; //long r,g,b; long i,j,gx,gy; //RGBQUAD c; //CxImage tmp; B YTE cindex; //tmp=image->cop C xImage tmp; tmp.Copy (*image); long xmin,xmax,ymin,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<ymax; y++) { for(x=xmin; x<xmax; x++) { s umx=0; s umy=0; 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 gradient else { Trang 18/25
  9. Tiểu l uận môn xử lý ảnh - Biên và các phương pháp dò biên //tinh theo chieu x for( i=-1; i<=1 ; i++) for(j=-1; j<=1; j++) { //lay gia tri mau C String s1; c index=image- >GetPixelIndex(x+i,y+j); gx=Gx[i+1][j+1]; s umx=sumx+ (cindex* gx); } //tinh theo chieu y for( i=-1; i<=1 ; i++) for(j=-1; j<=1; j++) { //lay gia tri mau c index=image- >GetPixelIndex(x+i,y+j); gy=Gy[i+1][j+1]; s umy=sumy+ (cindex* gy); } //lay xap xi s um=abs(sumx)+abs(sumy); s um=(BYTE)min(255, sum); } //AfxMessageBox(sum); tmp.SetPixelIndex(x,y,255-(BYTE)sum); } } } } //chuyen doi anh image->Transfer(tmp); return true; } C xImage CDemo3Doc::LamManhBien(CxImage *img) { Trang 19/25
  10. Tiểu l uận môn xử lý ảnh - Biên và các phương pháp dò biên if(!img->GetDIB()) return false; long x,y; //CxImage tmp; //tmp.Copy (*img); long xmin,xmax,ymin,ymax; B YTE preindex,posindex,index; xmin = ymin = 0; xmax =(long) img->GetWidth(); ymax=(long)img->GetHeight(); //neu anh la 8bit/1pixel if ((image->GetBpp() ==8) || (image->GetBpp() ==4)) { for(y=ymin; y<ymax; y++) { for(x=xmin; x<xmax; x++) { preindex=img->GetPixelIndex(x-1,y-1) ; index=img->GetPixelIndex(x,y) ; posindex=img->GetPixelIndex(x+1,y+1) ; //neu index tai diem x,y khong lon hon tai diem x-1,y-1 v a x+1,y+1 thi loai bo if ((index<=preindex || index<=posindex)) img->SetPixelColor( x,y,RGB(0,0,0)); //dat mau den } } } return *img; } v oid CDemo3Doc::OnMethodPrewitt() { // TODO: Add your command handler code here // TODO: Add your command handler code here if (image==0) return; if (!image->IsValid()) return; Trang 20/25
Theo dõi chúng tôi
Đồng bộ tài khoản