Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 27 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
27
Dung lượng
4,08 MB
Nội dung
HỌC VIỆN CƠNG NGHỆ BƯU CHÍNH VIỄN THƠNG - BÁO CÁO BÀI TẬP NHĨM MƠN: XỬ LÝ ẢNH GIẢNG VIÊN: Trần Thúy Hà NHÓM: 03 SINH VIÊN: Nguyễn Thuần Hưng – B15DCCN262 Vũ Chí Thành – B15DCCN516 Nguyễn Hữu Ước – B15DCCN638 HÀ NỘI – 2018 PHẦN 1: BÀI TẬP BẮT BUỘC Thực cài đặt chạy thuật tốn Ngơn ngữ sử dụng: Python 3.6.5 Thư viện: OpenCV (đọc, ghi ảnh); matplotlib (hiển thị so sánh kết quả); numpy (xử lý số học ma trận) Mã nguồn hàm xử lý, so sánh ảnh gốc ảnh xử lý cho thuật toán Tách ngưỡng (thresholding.py): Code: def threshold(T, image): height = image.shape[0] width = image.shape[1] for y in range(0, height): for x in range(0, width): image[y, x] = 255 if image[y, x] >= T else return image Kết thực với ngưỡng = 150: Khuếch tán lỗi chiều (error_diffusion.py): Code: def errorDiffusion1(T, image): height = image.shape[0] width = image.shape[1] temp = for y in range(0, height): for x in range(0, width): if (int(image[y, x]) + temp >= T): temp = int(image[y, x]) + temp - 255 image[y, x] = 255 else: temp = image[y, x] image[y, x] = temp = return image Kết thực với ngưỡng = 127: Khuếch tán lỗi chiều theo kiểu Floyd – Steinberg (fs_dithering.py): Code: def threshold(value, T): return 255 if value >= T else def errorDiffusionFS(image, T): height = image.shape[0] width = image.shape[1] for y in range(0, height): for x in range(0, width): oldpx = image[y, x] newpx = threshold(oldpx, T) error = oldpx - newpx if x < width-1: image[y, x+1] += error * 7/16 if x > and y < height-1: image[y+1, x-1] += error * 3/16 if y < height-1: image[y+1, x] += error * 5/16 if x < width-1 and y < height-1: image[y+1, x+1] += error * 1/16 return image Kết thực với ngưỡng = 127: Tăng giảm độ sáng (adjust_brightness.py): Code: def adjustBirghtness(image, value): height = image.shape[0] width = image.shape[1] for y in range(0, height): for x in range(0, width): temp = int(image[y, x]) + value if temp >= 255: image[y, x] = 255 elif temp = -22.5 and theta[y, x] < 22.5) or (theta[y, x] >= 157.5 or theta[y, x] < -157.5): if not (mag[y, x] >= mag[y, x+1] and mag[y, x] >= mag[y, x-1]): res[y, x] = elif (theta[y, x] >= 22.5 and theta[y, x] < 67.5) or (theta[y, x] >= -157.5 and theta[y, x] < -112.5): if not (mag[y, x] >= mag[y-1, x+1] and mag[y, x] >= mag[y+1, x-1]): res[y, x] = elif (theta[y, x] >= 67.5 and theta[y, x] < 112.5) or (theta[y, x] >= -112.5 and theta[y, x] < -22.5): if not (mag[y, x] >= mag[y-1, x] and mag[y, x] >= mag[y+1, x]): res[y, x] = else: if not (mag[y, x] >= mag[y-1, x-1] and mag[y, x] >= mag[y+1, x+1]): res[y, x] = print("Double Thresholding ") MAX = np.max(iamge) upperT = 0.2*MAX lowerT = 0.1*MAX a = [-1, 0, 1, -1, 1, -1, 0, 1] b = [-1, -1, -1, 0, 0, 1, 1, 1] def check(x, y): for i in range(8): if (res[y+b[i], x+a[i]] > upperT): return True return False for y in range(1, mag.shape[0]-1): for x in range(1, mag.shape[1]-1): if (res[y, x] >= upperT): res[y, x] = 255 elif (res[y, x] < lowerT): res[y, x] = else: if (check(x, y) == True): res[y, x] = 255 else: res[y, x] = print("DONE!") return res Ảnh gốc: Kết bước thực thuật toán: Làm trơn ảnh: Tính Gradient ảnh cách sử dụng mặt nạ Sobel: Kết với mặt nạ Sx Kết với mặt nạ Sy Tính độ lớn hướng Gradient điểm: Độ lớn Gradient điểm: Gradient hướng (minh họa dạng ảnh): Tìm cực trị địa phương theo Gradient hướng: Tách ngưỡng kép: ... C? ? ngh? ?a độ chênh lệch c? ??p x? ?m đi? ?m bi? ?n nhỏ tốt Số lượng trả lời – hi? ?u suất: bi? ?n không nh? ?n nhi? ?u, c? ? bi? ?n t? ?n gi? ?m số lượng bi? ?n phát không nh? ?n Chi tiết b? ?? ?c th? ?c hi? ?n: L? ?m tr? ?n ảnh: Nh? ?n. .. h? ?nh ảnh thơng dụng Phương pháp tốt, c? ? khả cho đường bi? ?n m? ??nh phát x? ?c đi? ?m bi? ?n với đi? ?m nhi? ?u M? ? ?c ti? ?u (ràng bu? ?c) JFC để phát tri? ?n thuật t? ?n tối ? ?u v? ?n đề li? ?n quan đ? ?n ti? ?u chu? ?n sau:... bi? ?n nói chung gi? ?m thi? ?u đáng kể số lượng li? ?u h? ?nh ảnh, đ? ?c tính c? ? ?u tr? ?c giữ để sử dụng cho vi? ? ?c xử lý h? ?nh ảnh Phương pháp Canny – phát tri? ?n John F Canny (JFC) vào n? ?m 1986, c? ?ng c? ?? xử lý h? ?nh