Vô cùng cảm ơn nếu bạn trình bày các phương pháp xử lí nói trên để chúng ta cùng thảo luận.
Anyway, nếu muốn có code thì vào codeproject mà tìm.
Trong chương trình học của mình có môn xử lý ảnh số (thực hành trên vc++) và mình cũng đã có các thuật toán mô phỏng như tách biên theo phương pháp Gradient (hay la bàn, hay Laplace) hoặc khử nhiễu xung bằng bộ lọc trung vị .. Vấn đề ở đây là mình gặp khó khăn khi đưa các thuật toán vào vc++ vì mình không rõ về vc++ lắm. Rất mong các bạn hướng dẫn mình làm chương trình này . Vô cùng cảm ơn bạn nào có thời gian gữi cái mã nguồn của chương trình này để mình học hỏi.
Vô cùng cảm ơn nếu bạn trình bày các phương pháp xử lí nói trên để chúng ta cùng thảo luận.
Anyway, nếu muốn có code thì vào codeproject mà tìm.
Bạn gặp khó khăn ơ bước nào? lấy ảnh, định dạng dữ liệu, địa chỉ dữ liệu, hay thuật toán... Bạn nên tìm 2 cuốn nó A Simplified Approach to Image Processing: Classical and Modern Techniques in C (http://www.flazx.com/ebook4948.php)
và Image Processing in C (http://www.flazx.com/ebook3163.php) có code C đi kèm rất hợp với những người bắt đầu.
Có một project có lẽ tốt nhất trên codeproject.com về xử lý ảnh và rất nhiều yếu tố khác về VC là CxImage http://www.codeproject.com/bitmap/cximage.asp, bạn nên down về xem thử và rút lấy kiến thức cho mình.
Chúc thành công.
Cảm ơn bạn imaging, bạn làm ơn hướng dẫn rõ hơn cho mình với và cho mình các tài liệu tiếng việt ấy bạn nhé (mình yếu môn tiếng anh lắm).
Do mình không có tài liệu (tiếng việt) của VC++ và kiến thức nông cạn về xử lý ảnh nên mình sẽ up lên đây những thuật toán về xử lý ảnh , mong các bạn góp ý và xây dựng ứng dụng bằng VC++ hộ mình với (nếu được hướng dẫn từng bước thì vô cùng cảm tạ các bạn).
.......................................
............................Visual C++ Code:
// Trước tiên ta khai báo 4 biến Public như sau: { BITMAPFILEHEADER bfHeader; BITMAPINFOHEADER biHeader; RGBQUAD Colors[256]; BYTE Data[1000][1000]; } // Giải thuật đọc ảnh Bitmap (dùng các phương thưc của con trỏ ar) như sau: { ar.Read(&bfHeader,sizeof(BITMAPFILEHEADER)); if(bfHeader.bfType!=('M'<<8|'B')) { MessageBox(NULL,"khong phai tep BITMAP!","Thong bao",MB_OK); return; } int i,j;BYTE b; ar.Read(&biHeader,sizeof(BITMAPINFOHEADER)); if(biHeader.biBitCount==8) { for(i=0;i<256;i++) ar.Read(&Colors[i],sizeof(RGBQUAD)); for(i=0;i<biHeader.biHeight;i++) for(j=0;j<biHeader.biWidth;j++) { ar.Read(&b,sizeof(BYTE)); Data[i][j]=b; } } else { MessageBox(NULL,"khong xu ly anh khac 256 mau!","Thong bao",MB_OK); return; } } // Giải thuật hiển thị ảnh Bitmap (dùng phương thức của trỏ pDC) như sau: { BYTE b; int i,j; for(i=0;i<pDoc->biHeader.biHeight;i++) for(j=0;j<pDoc->biHeader.biWidth;j++) { b=pDoc->Data[i][j]; pDC->SetPixel(j,pDoc->biHeader.biHeight-i,RGB(b,b,b)); } }
Híc mỏi tay quá, mình sẽ up các giải thuật khác ở các bài sau, mong các bạn chỉ giáo !