Xử lý ảnh bằng Visual Studio
10. Xử lý ảnh
- Để chuyển ảnh màu về ảnh xám chúng ta có công thức sau: a. O(x,y)=( IR(x,y) + IG(x,y) + IB(x,y)) /3 Với: x,y là tạo độ của điểm ảnh b. O(x,y)= IR(x,y) * 0.287 + IG(x,y) * 0.599 + IB(x,y) * 0.114 Ví dụ 1: Sử dụng công thức b cho ví dụ 1 như sau: Code: Select all
Kết quả thử nghiệm như
sau: - Đối với ảnh nhị phân ta kiểm tra giá trị màu nếu O(x,y)= 0 nếu I(x,y) < C BeerO(x,y)= 255 ngược lại Với C là ngưởng (-1 < C < 256) cần phân ngưỡng Ví dụ 2: Code: Select all
- Ở hàm trên nếu c.R < band chúng ta sử dụng là c.R vì đối với ảnh mức xám thì 3 thành phần màu bằng nhau nên không cần phân biệt c.R, c.G hay C.B. - Bạn hãy tạo 1 project rồi kiểm thử nó. - Nhìn lại ví dụ 2, chuyện gì đã xảy ra…: Chạy tốt, nhưng vấn đề là thời gian - Hai hàm trên đều sử dụng 2 phương thức set và get, về mặt thuật toán có lẻ bạn nghĩ 2 vòng lặp đó đã làm cho chương trình trở nên quá rùa đồng thời nếu sử dụng ảnh có độ phân giải hơi lớn tí là có thể treo luôn. - Vấn đề không phải giải thuật mà chính do 2 phương thức set và getpixel gây nên, khi bạn gọi 2 phương thức này hệ điều hành Win sẽ Lock ảnh lại đến khi kết thúc phương thức vừa goi tự động sẽ UnLock ảnh đó cho việt truy cập lần sau. Chính việc Lock rồi Unlock liên tục đã làm đã làm cho hàm trên xử lý chậm rãi từ tốn. - Giải thuật sau dùng kỹ thuật LockBits Code: Select all
- Giải thuật trên chủ yêu dựa trên 2 phương thức: Code: Select all
- Nhiệm vụ của chúng là sao chép các ô nhớ từ ptr vào mảng byte và ngược lại. - Tại sao lại có step là 4 (counter+=4) ? Đối với lớp Bitmap, khi ta khai báo khởi tạo bằng phương thức new sẽ nhận được đầu vào là một bitmap định dạng 32bit. Nếu chỉ gán bằng thì PixelFormat sẽ nhận định dạng bằng chính ảnh đầu vào Do đó, để tổng quát chúng ta dùng phương thức new: 1.3 Tổ Chức Đồ (Histogram) Định Nghĩa: Là đồ thị mô tả mối quan hệ giữa mức xám và số điểm ảnh có chung mức xám Ví dụ: - Tổ chức đồ được xử lý trên điểm ảnh, thường được xử lý để nâng cao chất lượng ảnh có thể dùng để nhận dạng ảnh - Cánh tính: + Tính h[x] là số lượng điểm ảnh có cùng mức xám x + Chạy i từ 0 -> 255 đếm số điểm ảnh có cùng mức xám i Ví dụ: Tính H[x] cho ảnh xám Code: Select all |