Hình ảnh lấy mẫu Python
Thay đổi kích thước hình ảnh có nghĩa là thay đổi kích thước của nó, có thể là chiều rộng, chiều cao hoặc thay đổi cả hai. Ngoài ra, tỷ lệ khung hình của hình ảnh gốc có thể được giữ nguyên trong hình ảnh đã thay đổi kích thước. Để thay đổi kích thước hình ảnh, OpenCV cung cấp cv2. chức năng thay đổi kích thước () Show
Trong hướng dẫn này, chúng ta sẽ cú pháp của cv2. thay đổi kích thước và thực hành với các ví dụ được cung cấp cho hầu hết các tình huống gặp phải trong quá trình sử dụng thông thường Cú pháp – cv2. thay đổi kích thước()Cú pháp của chức năng thay đổi kích thước trong OpenCV là cv2.resize(src, dsize[, dst[, fx[, fy[, interpolation]]]]) ở đâu Tham sốDescriptionsrc[bắt buộc] nguồn/đầu vào imagedsize[bắt buộc] kích thước mong muốn cho hình ảnh đầu rafx[tùy chọn] hệ số tỷ lệ dọc theo hệ số tỷ lệ trục ngangfy[tùy chọn] dọc theo cờ nội suy trục dọc[tùy chọn] sử dụng một trong các phương pháp sau. INTER_NEAREST – phép nội suy lân cận gần nhất INTER_LINEAR – phép nội suy song tuyến tính (được sử dụng theo mặc định) INTER_AREA – lấy mẫu lại bằng cách sử dụng quan hệ vùng pixel. Nó có thể là một phương pháp ưa thích để khử nhiễu hình ảnh, vì nó cho kết quả không có moire. Nhưng khi phóng to hình ảnh, nó tương tự như phương pháp INTER_NEAREST. INTER_CUBIC – phép nội suy nhị phân trên vùng lân cận 4×4 pixel INTER_LANCZOS4 – phép nội suy Lanczos trên vùng lân cận 8×8 pixelVí dụ sử dụng cv2. chức năng thay đổi kích thước ()Thay đổi kích thước hình ảnh có thể được thực hiện theo nhiều cách. Chúng tôi sẽ xem xét các ví dụ minh họa các hoạt động thay đổi kích thước sau đây
Sau đây là hình ảnh gốc có kích thước (149.200,4) (chiều cao, chiều rộng, số kênh) mà chúng tôi sẽ thử nghiệm trên đó. Ví dụ 1 – Thay đổi kích thước và giữ nguyên tỷ lệ khung hìnhGiảm tỷ lệ với thay đổi kích thước()Trong ví dụ sau, giá trị import cv2 img = cv2.imread('/home/img/python.png', cv2.IMREAD_UNCHANGED) print('Original Dimensions : ',img.shape) scale_percent = 60 # percent of original size width = int(img.shape[1] * scale_percent / 100) height = int(img.shape[0] * scale_percent / 100) dim = (width, height) # resize image resized = cv2.resize(img, dim, interpolation = cv2.INTER_AREA) print('Resized Dimensions : ',resized.shape) cv2.imshow("Resized image", resized) cv2.waitKey(0) cv2.destroyAllWindows()1 giữ tỷ lệ phần trăm mà hình ảnh phải được chia tỷ lệ. Cung cấp giá trị <100 thu nhỏ hình ảnh được cung cấp. Chúng tôi sẽ sử dụng giá trị import cv2 img = cv2.imread('/home/img/python.png', cv2.IMREAD_UNCHANGED) print('Original Dimensions : ',img.shape) scale_percent = 60 # percent of original size width = int(img.shape[1] * scale_percent / 100) height = int(img.shape[0] * scale_percent / 100) dim = (width, height) # resize image resized = cv2.resize(img, dim, interpolation = cv2.INTER_AREA) print('Resized Dimensions : ',resized.shape) cv2.imshow("Resized image", resized) cv2.waitKey(0) cv2.destroyAllWindows()1 này cùng với kích thước của hình ảnh gốc để tính toán chiều rộng và chiều cao của hình ảnh đầu ra thay đổi kích thước hình ảnh. py import cv2 img = cv2.imread('/home/img/python.png', cv2.IMREAD_UNCHANGED) print('Original Dimensions : ',img.shape) scale_percent = 60 # percent of original size width = int(img.shape[1] * scale_percent / 100) height = int(img.shape[0] * scale_percent / 100) dim = (width, height) # resize image resized = cv2.resize(img, dim, interpolation = cv2.INTER_AREA) print('Resized Dimensions : ',resized.shape) cv2.imshow("Resized image", resized) cv2.waitKey(0) cv2.destroyAllWindows() đầu ra Original Dimensions : (149, 200, 4) Resized Dimensions : (89, 120, 4) Ảnh gốc có kích thước [149 x 200 x 4] đã được thay đổi kích thước thành [89, 120, 4] bằng hàm resize() Nâng cấp với thay đổi kích thước()Trong ví dụ sau, giá trị scale_percent giữ tỷ lệ phần trăm mà hình ảnh phải được chia tỷ lệ. Cung cấp giá trị >100 nâng cấp hình ảnh được cung cấp thay đổi kích thước hình ảnh. py import cv2 img = cv2.imread('/home/img/python.png', cv2.IMREAD_UNCHANGED) print('Original Dimensions : ',img.shape) scale_percent = 220 # percent of original size width = int(img.shape[1] * scale_percent / 100) height = int(img.shape[0] * scale_percent / 100) dim = (width, height) # resize image resized = cv2.resize(img, dim, interpolation = cv2.INTER_AREA) print('Resized Dimensions : ',resized.shape) cv2.imshow("Resized image", resized) cv2.waitKey(0) cv2.destroyAllWindows() đầu ra Original Dimensions : (149, 200, 4) Resized Dimensions : (327, 440, 4) Ví dụ 2 – Thay đổi kích thước và không giữ nguyên tỷ lệ khung hìnhChỉ thay đổi kích thước chiều rộngTrong ví dụ này, chúng tôi đã cung cấp một giá trị cụ thể tính bằng pixel cho chiều rộng và giữ nguyên chiều cao thay đổi kích thước hình ảnh. py import cv2 img = cv2.imread('/home/img/python.png', cv2.IMREAD_UNCHANGED) print('Original Dimensions : ',img.shape) width = 440 height = img.shape[0] # keep original height dim = (width, height) # resize image resized = cv2.resize(img, dim, interpolation = cv2.INTER_AREA) print('Resized Dimensions : ',resized.shape) cv2.imshow("Resized image", resized) cv2.waitKey(0) cv2.destroyAllWindows() đầu ra ________số 8_______Vì chúng tôi chỉ tăng chiều rộng, hình ảnh đầu ra trông được kéo dài theo chiều ngang Chỉ thay đổi kích thước chiều caoTrong ví dụ sau, giá trị scale_percent giữ tỷ lệ phần trăm theo đó chiều cao phải được chia tỷ lệ. Hoặc bạn cũng có thể cung cấp một giá trị cụ thể bằng pixel thay đổi kích thước hình ảnh. py import cv2 img = cv2.imread('/home/img/python.png', cv2.IMREAD_UNCHANGED) print('Original Dimensions : ',img.shape) width = img.shape[1] # keep original width height = 440 dim = (width, height) # resize image resized = cv2.resize(img, dim, interpolation = cv2.INTER_AREA) print('Resized Dimensions : ',resized.shape) cv2.imshow("Resized image", resized) cv2.waitKey(0) cv2.destroyAllWindows() đầu ra Original Dimensions : (149, 200, 4) Resized Dimensions : (440, 200, 4) Vì chúng tôi chỉ tăng chiều cao nên hình ảnh đầu ra trông được kéo dài theo chiều dọc Thay đổi kích thước thành chiều rộng và chiều cao cụ thểTrong ví dụ sau, chúng tôi sẽ cung cấp giá trị cụ thể bằng pixel cho cả chiều rộng và chiều cao thay đổi kích thước hình ảnh. py import cv2 img = cv2.imread('/home/img/python.png', cv2.IMREAD_UNCHANGED) print('Original Dimensions : ',img.shape) width = 350 height = 450 dim = (width, height) # resize image resized = cv2.resize(img, dim, interpolation = cv2.INTER_AREA) print('Resized Dimensions : ',resized.shape) cv2.imshow("Resized image", resized) cv2.waitKey(0) cv2.destroyAllWindows() đầu ra import cv2 img = cv2.imread('/home/img/python.png', cv2.IMREAD_UNCHANGED) print('Original Dimensions : ',img.shape) scale_percent = 60 # percent of original size width = int(img.shape[1] * scale_percent / 100) height = int(img.shape[0] * scale_percent / 100) dim = (width, height) # resize image resized = cv2.resize(img, dim, interpolation = cv2.INTER_AREA) print('Resized Dimensions : ',resized.shape) cv2.imshow("Resized image", resized) cv2.waitKey(0) cv2.destroyAllWindows()0 Phần kết luậnKết thúc Hướng dẫn OpenCV Python này, chúng ta đã học cách thay đổi kích thước hình ảnh trong Python bằng hàm OpenCV resize() Upsampling có cải thiện chất lượng hình ảnh không?Lấy mẫu lên làm tăng độ phân giải của hình ảnh bằng cách thêm nhiều pixel hơn trên mỗi đơn vị đo lường . Chất lượng hình ảnh có thể bị giảm do các pixel mới được nội suy dựa trên màu của các pixel lân cận; .
Upsampling một hình ảnh có nghĩa là gì?Lấy mẫu lên là việc tăng độ phân giải không gian trong khi vẫn giữ nguyên dạng 2D của hình ảnh . Nó thường được sử dụng để phóng to một vùng nhỏ của hình ảnh và để loại bỏ hiệu ứng điểm ảnh phát sinh khi hình ảnh có độ phân giải thấp được hiển thị trên một khung tương đối lớn.
Bạn có thể Upsample một hình ảnh bao nhiêu?Bao nhiêu để Upsample? Thuật toán nào được sử dụng để lấy mẫu?Các thuật toán khả dụng để lấy mẫu tăng lần lượt là láng giềng gần nhất và tuyến tính, song tuyến tính, song phương và tam giác cho Tenor đầu vào 3D, 4D và 5D . |