De thi xu ly anh

De thi xu ly anh

Lượt xem: 69,289Lượt tải: 5Số trang: 67

Mô tả tài liệu

Tài liệu tham khảo giúp cho các bạn yêu thích môn xử lý hình ảnh biết các công thức quy trình đêr xử lý được ảnh đẹp. Chúc các bạn thành công

Tóm tắt nội dung

Xây dựng và cài đặt thuật toán làm âm ảnh. Cách làm âm ảnh được cho bằng phương trình: s=L-1-r trong đó L=256 là số lượng mức xám, r là mức xám đầu vào, s là mức xám đầu ra Quan sát đồ thị ta thấy: Mức xám đầu ra “ngược” với đầu vào, tức là thuật toán này biến ảnh đen trở thành ảnh trắng và trắng thành đen. void **f, BYTE **g) int x, y; r = = s; Xây dựng và cài đặt thuật toán biến đổi logarit ảnh. int x, y; r = = dựng và cài đặt thuật toán biến đổi lũy thừa ảnh. int x, y; r = = trình đường thẳng đi qua 2 điểm (x1,y1) và (x2,y2) là: int x, y; r = = = đó ta làm tăng được độ tương phản của ảnh. int k, j, x, y; r = = mô tả histogram mong muốn như hình vẽ, ta dùng phương trình đường thẳng đi qua hai điểm (x1,y1) và z, k, i, j, x, y; r = = k; Xây dựng và cài đặt thuật toán cân bằng histogram cục bộ. Chọn cửa sổ có kích thước lẻ để có phần tử trung tâm, ví dụ: m=n=3, cân bằng histogram của dữ liệu lấy từ cửa sổ và thay phần tử trung tâm bằng phần tử mới. void **w, int m, int n, double *p) int x, y, k; r = x, y, s, t, a, = = = dựng và cài đặt thuật toán nâng cao chất lượng ảnh bằng thống kê sự chênh lệch mức xám quá nhỏ thì cân bằng histogram cho toàn bộ ảnh sẽ không thấy được sự chênh lệch đó. Nếu cân bằng histogram cục bộ tức cân bằng cho từng khối ảnh, ta sẽ thấy được sự chênh lệch nhưng lại làm thay đổi ảnh. Tiêu chuẩn chọn khối ảnh căn cứ vào 2 đại lượng thống kê là mean (giá trị trung bình hay giá trị kỳ vọng) và variance (phương x, y; m = m + x, y; int x, y, s, t, a, = = = dựng và cài đặt thuật toán lọc tuyến tính làm ta dùng một cửa sổ nhỏ được gọi là mặt nạ (hay bộ lọc), chẳng hạn bộ lọc có kích thước là kích thước của bộ lọc, m và n thường là số lẻ để bộ lọc có phần tử trung và b=n/2 là kích thước nữa bộ lọc. void **f, int M, int N, BYTE **g, double **w, int m, int n, BOOL bx, by, a, b, x, y, s, t, p, = M, N, g, w, m, n, median đặc biệt hiệu quả khi trong ảnh có nhiễu xung, nhiễu xung còn được gọi là nhiễu muối tiêu. Tạo mảng một chiều, sắp tăng dần và phần tử f(x,y) được thay bằng phần tử chính giữa. int = = dựng và cài đặt thuật toán nâng cao chất lượng ảnh bằng đạo hàm cấp ta dùng đạo hàm cấp một hoặc cấp hai để làm tăng độ nét của ảnh. Đạo hàm cấp một của hàm hai chiều được gọi là gradient, ký hiệu là và được định nghĩa như sau : Đạo hàm cấp một theo x được định nghĩa hàm cấp một theo y được định nghĩa – số liệu trong mặt nạ 3x3 là Đạo hàm cấp một theo hướng x là : gx = z8-z5 Đạo hàm cấp một theo hướng y là : gy = đã định nghĩa đạo hàm cấp một theo x như sau : đạo hàm cấp một theo y là : có hai mặt nạ gx và gy và gọi là mặt nạ **f, int M, int N, int **g, double **w, int m, int n, BOOL bx, by, a, b, x, y, s, t, p, = x, y; r = = dựng và cài đặt thuật toán nâng cao độ nét của ảnh bằng đạo hàm cấp hàm cấp hai khác 0 ở đầu và cuối của mức xám bước hoặc mức xám thoai hàm cấp 2 của ảnh còn được gọi là toán tử hàm cấp hai của ảnh là: Nâng cao độ nét của ảnh được cho bằng phương **f, int M, int N, int **g, double **w, int m, int n, BOOL bx, by, a, b, x, y, s, t, p, = **f, BYTE **g) int x, y, r; if < min) min = > max) max = = 255); r = f[x][y] - = r; Xây dựng và cài đặt thuật toán nâng cao độ nét ảnh bằng mặt nạ làm nhòe và lọc tăng cao độ nét của ảnh dùng mặt nạ làm nhòe thường dùng trong công nghệ in ảnh, quá trình gồm các bước sau ảnh gốc trừ với ảnh đã làm nhòe ta được một ảnh mới gọi là mặt nạ làm - g(x,y) = f(x,y) + được chọn > 0, khi k=1 ta gọi là mặt nạ làm nhòe, khi k>1 ta gọi là lọc tăng nạ Gauss dùng để làm nhòe ảnh được cho bằng phương **f, int M, int N, double **g, double **w, int m, int n, BOOL bx, by, a, b, x, y, s, t, p, = r; int x, y; sum += = + = s; Cho A và B là 2 tập trong Z, bào mòn A bởi B kí hiệu là . Ta lấy tập B dời đi một độ dời z sao cho tập vừa dời là tập con của A. void **f, int M, int N, BYTE **B, int m, int n, BYTE **g, BOOL bx, by, a, b, x, y, s, t, p, = = 0; Cho A và B là 2 tập trong Z, giãn nở A bởi B kí hiệu là được định nghĩa là: void **f, int M, int N, BYTE **B, int m, int n, BYTE **g, BOOL bx, by, a, b, x, y, s, t, p, = = 0; void **f, int M, int N, BYTE **B, int m, int n, BYTE của tập A bởi phần tử cấu trúc B ký hiệu là A • B và được định nghĩa như sau: void **f, int M, int N, BYTE **B, int m, int n, BYTE của tập A kí hiệu là Đầu tiên ta bào mòn A bởi B, lấy ảnh A ban đầu trừ đi ảnh đã bào mòn, ta sẽ được biên. int x, y; if (f[x][y] < = = 255; B = (BYTE = = f[x][y] - chú: X là ảnh có kích thước bằng ảnh A. int x, y; if (f[x][y] == 0) void **a, int M, int N, BYTE **b, BYTE **c) int x, = = 0; X = (BYTE x,y; B = (BYTE = 1; if (f[x][y] < = = dựng và cài đặt thuật toán phát hiện cạnh ảnh bằng đạo hàm cấp ta dùng mặt nạ đạo hàm cấp hai để phát hiện cạnh ảnh, nhưng cạnh ảnh sẽ bị dày lên gấp đôi, và ta phải xử lí trường hợp ra người ta dùng các mặt nạ đạo hàm cấp hai sau đây để phát hiện cạnh ảnh. Ta gọi đầu ra tại 1 điểm ảnh là R1, R2, R3 và R4. Mục đích là khi quét mặt nạ qua vùng ảnh có độ sáng đồng đều thì đầu ra sẽ = 0. int x, y, r; if < min) min = > max) max = = dựng và cài đặt thuật toán phát hiện cạnh ảnh bằng đạo hàm cấp một. Ta dùng mặt nạ đạo hàm cấp một để phát hiện cạnh ảnh. Có 2 mặt nạ đạo hàm cấp một thường dùng là Sobel, gx là ảnh đạo hàm theo hướng x. gy là ảnh đạo hàm theo hướng y. Ta có thể kết hợp thêm với ngưỡng để lấy những điểm ảnh trên cạnh cho hạn ta lấy ngưỡng =33% giá trị max của đạo hàm cấp 1, nếu ta phát hiện điểm ảnh nhỏ hơn ngưỡng thì ta bỏ qua. int x, y, r; if < min) min = = dùng hàm Gauss để làm trơn ảnh và lọc hàm cấp 2 của hàm 2 chiều Gauss còn được gọi là Laplace của Gauss và viết tắt là điểm cắt 0 của ảnh đạo hàm cấp 2, điểm cắt 0 là điểm ảnh ở bước 2 mà trước đó có giá trị dương và sau đó có giá trị âm và ngược lại. Ta thường cho = 4 và kích thước của bộ lọc là n = 6 Ta dùng hàm Gauss để làm trơn ảnh và xóa là ảnh đầu là mặt nạ là ảnh đã làm theo ta dung mặt nạ đạo hàm cấp 1 như Sobel hay Prewitt để phát hiện cạnh của ảnh đã làm 2: tính ảnh đạo hàm cấp 1 và ảnh góc pha: M(x,y) và mặt nạ đạo hàm cấp một như Sobel hay Prewitt để phát hiện cạnh của ảnh đã làm 1: Tính M(x,y) và 4: Phát hiện lổ trống theo hướng khác bằng cách là quay ảnh một góc , lặp lại bước 3 và quay ngược trở lại Hình sau đây biểu diễn tập các điểm của một đường cong hở, có điểm đầu là A và điểm cuối là B. Viết phương trình đường thẳng đi qua hai điểm A và B, tiếp theo ta tính khoảng cách từ các điểm còn lại đến đường thẳng đó và chọn khoảng cách lớn nhất, trong trường hợp này là điểm C. Tính khoảng cách còn lại từ các đỉnh và chọn khoảng cách lớn nhất D… Nối A B C D E F.Nếu khoảng cách từ các điểm đến đường thẳng nhỏ hơn ngưỡng T thì ta dừng và không chia tiếp. Thứ nhất làm sao ta biết được hai điểm ban đầu, thứ hai là sao biết được thứ tự của 1: cho trước P là tập hợp các đỉnh có thứ tự, cho trước hai đỉnh bắt đầu A và B. Đối với đường cong khép kín thì bước 3 có thay đổi một chút, điểm A được đưa vào stacks open và điểm B được đưa vào stacks open và stacks 4: viết phương trình đường thẳng của hai đỉnh sau cùng trong stacks closed và stacks open. Mục đích của biến đổi Hough là để phát hiện ra đường thẳng và đường tròn, hoặc đường bất kì. Cho điểm xi, yi ở trong mặt phẳng x, y. Dùng mặt phẳng a, b không biết được kích thước ảnh là bao nhiêu vì cho ảnh chạy từ -∞, ∞ và b: -∞, ∞ Do các điểm ảnh có tọa độ x dương, y dương nên chạy từ -900 đến 900 và phạm vi của là , trong đó D là khoảng cách xa nhất giữa 2 góc đối diện ở trong ảnh. int x, y; if (f[x][y] == 0) r = 1: Cho ảnh đầu vào f(x,y) có kích thước MxN. Bước 2: Thêm zero vào phần mở rộng, ta được ảnh 3: Nhân fp(x,y) với (-1)x+y để dời F(0,0) vào tâm ảnh. Bước 4: Biến đổi Fourier của ảnh ở Bước 3 ta được 5: Cho hàm lọc có giá trị thực H(u,v) đối xứng qua tâm 6: Thu được ảnh đã xử lý bằng biến đổi Fourier ngược, lấy phần thực và dời trở lại gốc tọa độ Bước 7: Bỏ phần đã mở rộng, ta thu được ảnh g(x,y) có kích thước MxN. Xây dựng và cài đặt thuật toán làm trơn ảnh trong miền tần số dùng bộ lọc lowpass lý trong miền tần số được cho bằng phương đó F(u,v) là biến đổi Fourier của ảnh f. Để làm trơn trong miền tần số ta dùng bộ lọc lowpass (thông là khoảng cách từ một điểm bất kì (u,v) đến tâm của ảnh int x, y, u, = ((x+y)%2 == 1) if ((x+y)%2 == 1) if (gp[x][y] > = 255; else if (gp[x][y] < = = dựng và cài đặt thuật toán làm trơn ảnh trong miền tần số dùng bộ lọc lowpass trong miền tần số được cho bằng phương đó F(u,v) là biến đổi Fourier của ảnh f. Để làm trơn trong miền tần số ta dùng bộ lọc lowpass (thông là khoảng cách từ một điểm bất kì (u,v) đến tâm của ảnh int x, y, u, = ((x+y)%2 == 1) if ((x+y)%2 == 1) if (gp[x][y] > = 255; else if (gp[x][y] < = = dựng và cài đặt thuật toán làm trơn ảnh trong miền tần số dùng bộ lọc lowpass trong miền tần số được cho bằng phương đó F(u,v) là biến đổi Fourier của ảnh f. Để làm trơn trong miền tần số ta dùng bộ lọc lowpass (thông thấp). Bộ lọc lowpass Gauss được cho bằng phương là khoảng cách từ một điểm bất kì (u,v) đến tâm của ảnh int x, y, u, = ((x+y)%2 == 1) if ((x+y)%2 == 1) if (gp[x][y] > = 255; else if (gp[x][y] < = = dựng và cài đặt thuật toán làm nét ảnh trong miền tần số dùng bộ lọc highpass lý ta dùng bộ lọc thông cao để làm tăng độ nét của ảnh Bộ lọc thông cao là hiệu của một và bộ lọc thông thấp: Ta có 3 loại bộ lọc highpass thông dụng là: lý tưởng, là khoảng cách từ một điểm bất kì (u,v) đến tâm của ảnh int x, y, u, = ((x+y)%2 == 1) if ((x+y)%2 == 1) if (gp[x][y] > = 255; else if (gp[x][y] < = = dựng và cài đặt thuật toán làm nét ảnh trong miền tần số dùng bộ lọc highpass ta dùng bộ lọc thông cao để làm tăng độ nét của ảnh Bộ lọc thông cao là hiệu của một và bộ lọc thông thấp: Ta có 3 loại bộ lọc highpass thông dụng là: lý tưởng, Gauss. n là bậc của bộ lọc, D0 là tần số là khoảng cách từ một điểm bất kì (u,v) đến tâm của ảnh int x, y, u, = ((x+y)%2 == 1) if ((x+y)%2 == 1) if (gp[x][y] > = 255; else if (gp[x][y] < = = dựng và cài đặt thuật toán làm nét ảnh trong miền tần số dùng bộ lọc highpass ta dùng bộ lọc thông cao để làm tăng độ nét của ảnh Bộ lọc thông cao là hiệu của một và bộ lọc thông thấp: Ta có 3 loại bộ lọc highpass thông dụng là: lý tưởng, Gauss. Bộ lọc highpass Gauss được cho bằng phương là khoảng cách từ một điểm bất kì (u,v) đến tâm của ảnh int x, y, u, = ((x+y)%2 == 1) if ((x+y)%2 == 1) if (gp[x][y] > = 255; else if (gp[x][y] < = = dựng và cài đặt thuật toán biến đổi Laplace trong miền tần số. Ta có biến đổi Fourier của vi phân cấp n của hàm f(x) Vậy đạo hàm cấp 2 của ảnh là: Ta phải biến đổi H(u,v) để H(u,v) là đối xứng qua tâm của ảnh. Sau đó ta dùng phép biến đổi Fourier ngược để được ảnh x, y, u, = ((x+y)%2 == 1) if ((x+y)%2 == 1) if (gp[x][y] > max) max = (gp[x][y] < max) r = = = = dựng và cài đặt thuật toán mặt nạ làm nhòe, lọc tăng cường và lọc nâng tần số cao. với HLP(u,v) là bộ lọc lowpass và F(u,v) là biến đổi Fourier của ảnh f. Nâng cao độ nét của ảnh dùng mặt nạ làm nhòe được cho bằng phương = f(x,y) + k=1 ta gọi là mặt nạ làm nhòe. int x, y, u, = ((x+y)%2 == 1) if ((x+y)%2 == 1) if (gp[x][y] > = 255; else if (gp[x][y] < = = có ảnh f(x,y) là tích của hai thành phần: độ chói và độ phản xạ. Như vậy nếu ta muốn tăng độ tương phản và làm nét ảnh thì phải giảm tần số thấp và nâng tần số cao. Hàm lọc H(u,v) được cho sao cho có thể giảm tần số thấp và nâng tần số cao. Do trước đó ta lấy logarit của ảnh nên bây giờ ta phải lấy ngược trở lại bằng hàm mũ. Người ta cho hàm lọc đồng hình H(u,v) như sau, để có thể nâng tần số cao và giảm được tần số là khoảng cách từ một điểm bất kì (u,v) đến tâm của ảnh Trong đó c là điều khiển độ dốc của hàm x, y, u, = log(1.0 + ((x+y)%2 == 1) if ((x+y)%2 == 1) if (gp[x][y] > = 255; else if (gp[x][y] < = =