Báo cáo tích chập xử lý ạn

BÁO CÁO XỬ LÝ ẢNH

BÁO CÁO XỬ LÝ ẢNH

Tách biên là một công cụ quan trọng trong xử lý ảnh số. Nó làm giảm một cách đáng kể khối lượng dữ liệu cần tính toán, chỉ giữ lại một số ít những thông tin Trong bài này chúng em xin đưa ra một số phương pháp tách biên đang được sử dụng phổ biến hiện nay thông qua matlab toolbox và viết chương trình trên MATLAB để tiến hành so sánh cả về định tính và định lượng. Trong bài này chúng em xin trình bày 3 phương pháp tách biên bằng Gradient thông qua các toán tử Sobel, Prewitt và Roberts.

Báo cáo tích chập xử lý ạn
vi

Báo cáo tích chập xử lý ạn

Đã đăng vào thg 10 29, 2017 9:39 SA 4 phút đọc

I. Introduction

  • Bài trước chúng ta đã tìm hiểu về phương pháp xử lý ảnh point processes (xử lý theo điểm), hôm nay chúng ta sẽ đi tìm hiểu "convolution" hay còn gọi là tích chập, một bước rất quan trọng và cực kỳ hữu dụng trong phương pháp area processes (tức xử lý theo vùng), có ứng dụng rất lớn trong việc: đạo hàm ảnh, xóa nhiễu ảnh, xác định biên của ảnh trong các bài toán nhận dạng...

II. Convolution

  • Đối với phép lọc ảnh, phép tích chập giữa ma trận lọc (kernel) và ảnh cho ra kết quả ảnh đã được xóa nhiễu.

  • Ta có công thức tích chập giữa hàm ảnh f(x, y) và bộ lọc k(x, y) (kích thước mxn) như sau:

    Báo cáo tích chập xử lý ạn

  • Thành phần không thể thiếu của phép tích chập là ma trận kernel. Điểm neo (anchor point) của kernel sẽ quyết định vùng ma trận tương ứng trên ảnh để tích chập, thông thường anchor point được chọn là tâm của kernel. Giá trị mỗi phần tử trên kernel được xem như là hệ số tổ hợp với lần lượt từng giá trị độ xám của điểm ảnh trong vùng tương ứng với kernel.

  • Phép tích chập được hình dung thực hiện bằng việc dịch chuyển ma trận kernel lần lượt qua tất cả các điểm ảnh trong ảnh, bắt đầu từ góc bên trái trên của ảnh. Và đặt anchor point tương ứng tại điểm ảnh đang xét. Ở mỗi lần dịch chuyển, thực hiện tính toán kết quả mới cho điểm ảnh đang xét bằng công thức tích chập.

  • Để hiểu rõ hơn chúng ta hãy theo dõi ảnh sau:

    Báo cáo tích chập xử lý ạn

  • Cứ làm lần lượt theo thứ tự từ trái sang phải từ trên xuống dưới cho đến khi kết thúc. Chú ý: Có 1 vấn đề là tại 1 số điểm của ma trận kernel sẽ nằm bên ngoài ma trận ảnh khi ma trận này quét qua, thì tại những điểm đó chúng ta sẽ lấy giá trị của nó là 0 .

    Báo cáo tích chập xử lý ạn

  • Thuật toán áp dụng:

    Báo cáo tích chập xử lý ạn

  • Ví dụ sau khi lọc ảnh:

    Báo cáo tích chập xử lý ạn

  • Nhược điểm và cách khắc phục:

    • Convolution vẫn còn là một kỹ thuật với độ phức tạp tính toán cao. Một số cách dưới đây có thể tối ưu tốc độ của convolution:
    • Mỗi phần tử trong ma trận kernel nên là số nguyên: như trong ví dụ trên, các phần tử trong kernel thực ra là số thực, tuy nhiên, tôi thực hiện chuyển sang ma trận số nguyên với số hạng chung cho tất cả các phần tử, kết quả tích chập sẽ nhân cho số hạng chung này. Kernel nên thực hiện lưu trong mảng một chiều. Tạo ma trận chỉ số truy cập nhanh, với cách này có thể truy cập nhanh đến pixel trên ảnh, tương ứng với kernel mà không cần tính toán chỉ số thêm lần nữa. Ví dụ, với kernel (size: 3x3, anchor point: center)
      Báo cáo tích chập xử lý ạn

III. Tổng kết

  • Tích chập thực sự là một công cụ vô cùng đắc lực trong xử lý ảnh theo vùng (area processes), hiểu được nó sẽ giúp chúng ta rất dễ dàng thực hiện được các bài toán khó hơn sau này.

All rights reserved

Báo cáo tích chập xử lý ạn

Hãy đăng ký một tài khoản Viblo để nhận được nhiều bài viết thú vị hơn.

Ngày đăng: 02/10/2014, 18:37

báo cáo bài tập môn xử lý ảnh, bao gồm code chương trình convolution được viết bới ngôn ngữ lập trình c++,báo cáo bài tập môn xử lý ảnh, bao gồm code chương trình convolution được viết bới ngôn ngữ lập trình c++,báo cáo bài tập môn xử lý ảnh, bao gồm code chương trình convolution được viết bới ngôn ngữ lập trình c++, Nguyễn Thị Lan_K5A-CNTT 1 Học Viện Quản Lý Giáo Dục Khoa Công Nghệ Thông Tin Sinh Viên: Nguyễn Thị Lan Lớp: K5A_CNTT BÀI TẬP MÔN XỬ LÝ ẢNH I. Chương trình #include<stdio.h> #include<conio.h> #include<math.h> void main() { int M=5, N=5; int L=3; int H[3][3]={{0,-1,0},{-1,4,-1},{0,-1,0}}; int MaO[5][5]; int MaI[5][5]={{4,7,2,7,1},{5,7,1,7,1},{6,6,3,8,3},{5,7,5,7,1},{5,7, 6,1,2}}; tichchap(MaO, MaI, M, N, H, L); show(MaO, N, M); return(0); } void tichchap(int MaO[5][5], int MaI[5][5], int M, int N, int H[3][3], int L) { int Row, Col,k, l, m,n; int Lc=(1+L)/2; int Sum[M][N]; for(m=0; m<M; m++) Nguyễn Thị Lan_K5A-CNTT 2 for(n=0; n<N; n++) Sum[m][n]=0; for(m=0; m<M; m++) for(n=0; n<N; n++) { for(k=0; k<L; k++) for(l=0; l<L; l++) { Row=m-k+Lc-1; Col=n-l+Lc-1; if((Row >=0)&&(Col>=0)&&(Row<M)&&(Col<N)) Sum[m][n] += H[k][l]*MaI[Row][Col]; } } for(m=0; m<M; m++) for(n=0; n<N; n++) { MaO[m][n]=Sum[m][n]; } } void show(int MaI[5][5], int M, int N) { int m, n; for(m=0; m<M; m++) { for(n=0; n<N; n++) printf("%4d",MaI[m][n]); printf("\n"); Nguyễn Thị Lan_K5A-CNTT 3 } } II. Kết quả hiển thị

- Xem thêm -

Xem thêm: Bài tập Môn xử lý ảnh Chương trình tính tích chập Convolution C++, Bài tập Môn xử lý ảnh Chương trình tính tích chập Convolution C++,