Hướng dẫn overlay heatmap on image python - lớp phủ bản đồ nhiệt trên hình ảnh python

Trả lời cập nhật - 29 tháng 4 năm 2022.

Sau các bình luận lặp đi lặp lại, tôi đã quyết định cập nhật bài đăng này với một hình ảnh tốt hơn.

Xem xét hình ảnh sau:

img = cv2.imread('image_path')

Tôi đã thu được một hình ảnh nhị phân sau khi thực hiện ngưỡng nhị phân trên kênh A của hình ảnh được chuyển đổi trong phòng thí nghiệm:

lab = cv2.cvtColor(img, cv2.COLOR_BGR2LAB) a_component = lab[:,:,1] th = cv2.threshold(a_component,140,255,cv2.THRESH_BINARY)[1]

Áp dụng Gaussian Blur:

blur = cv2.GaussianBlur(th,(13,13), 11)

Bản đồ nhiệt kết quả:

heatmap_img = cv2.applyColorMap(blur, cv2.COLORMAP_JET)

Cuối cùng, chồng chất nhiệt trên hình ảnh gốc:

super_imposed_img = cv2.addWeighted(heatmap_img, 0.5, img, 0.5, 0)

Lưu ý: Bạn có thể thay đổi các tham số trọng lượng trong hàm lab = cv2.cvtColor(img, cv2.COLOR_BGR2LAB) a_component = lab[:,:,1] th = cv2.threshold(a_component,140,255,cv2.THRESH_BINARY)[1] 4 và quan sát sự khác biệt. You can vary the weight parameters in the function lab = cv2.cvtColor(img, cv2.COLOR_BGR2LAB) a_component = lab[:,:,1] th = cv2.threshold(a_component,140,255,cv2.THRESH_BINARY)[1] 4 and observe the differences.

Hello,

Tôi vẫn đang học CV2 và cố gắng hiểu làm thế nào để hoàn thành công việc.

Tôi có một bản đồ nhiệt có kích thước (1024, 1024) nằm trong khoảng 0,0 và 1,0. Bản đồ nhiệt thuộc loại 'float64' và có vẻ như thế này

Tôi có một hình ảnh có kích thước (1024, 1024, 3) của loại 'float32'.

Khi tôi tăng cường bản đồ nhiệt trên hình ảnh bằng matplotlib, nó hoạt động tốt.

colormap = 'plasma' fig = plt.figure(figsize=(20,20)) ax2 = plt.subplot(1, 4, 3, aspect='equal') ax2.imshow(np.squeeze(img), alpha = 0.5, cmap='plasma') hm = ax2.imshow(heatmap, alpha = 0.5)

Kết quả là:

Làm cách nào để làm điều tương tự bằng CV2?

Tôi đã thử:

output = cv2.addWeighted(heatmap, 0.7, img, 0.3, 0)

Nó đã cho tôi lỗi sau:

error: OpenCV(4.2.0) C:\projects\opencv-python\opencv\modules\core\src\arithm.cpp:669: error: (-209:Sizes of input arguments do not match) The operation is neither 'array op array' (where arrays have the same size and the same number of channels), nor 'array op scalar', nor 'scalar op array' in function 'cv::arithm_op'

Để phù hợp với kích thước của bản đồ nhiệt và hình ảnh,

heatmap1 = cv2.cvtColor(heatmap.astype('float32'), cv2.COLOR_GRAY2RGB)

Bây giờ, hình dạng là (1024, 1024, 3), nhưng khi tôi vẽ HeatMap1, nó cho thấy

Bất kỳ trợ giúp hoặc đề xuất sẽ giúp ích rất nhiều! Cảm ơn bạn :)

Xin lưu ý rằng tôi muốn giữ hình ảnh và bản đồ nhiệt trong phạm vi [-1, 1] hoặc [0,1] nếu có thể. Chuyển đổi hình ảnh đầu vào thành DTYPE 'UINT16' không thực sự hoạt động tốt. Nó cho thấy hình ảnh với tiếng ồn.

Bước 4 - Tạo một trục trong Python ..

Bước 5 - Tạo một mảng để chú thích bản đồ nhiệt ..

Bước 6 - Tạo hình Matplotlib và xác định cốt truyện ..: 3 inputs:

  1. Bản đồ nhiệt trong xử lý hình ảnh là gì? image path (string) or image value (numpy array)
  2. Bản đồ nhiệt (hoặc bản đồ nhiệt) là một kỹ thuật trực quan hóa dữ liệu cho thấy độ lớn của một hiện tượng là màu theo hai chiều. Sự thay đổi về màu sắc có thể là theo màu sắc hoặc cường độ, mang lại các tín hiệu trực quan rõ ràng cho người đọc về cách hiện tượng được phân cụm hoặc thay đổi trên không gian. 2-D numpy value (no shape restriction)
  3. Một công cụ đơn giản để vẽ hình ảnh lớp phủ nhiệtgaussian filter: mosaic smoothing (gaussian_std, default is 10. when set to 0, means no filter apply)

from HeatMap import HeatMap # input a image path and a numpy array heatmap hm = HeatMap('demo_image.jpg',heat_map) # or input a numpy array image and heatmap hm = HeatMap(image,heat_map,gaussian_std=0)

Phương pháp 1 lab = cv2.cvtColor(img, cv2.COLOR_BGR2LAB) a_component = lab[:,:,1] th = cv2.threshold(a_component,140,255,cv2.THRESH_BINARY)[1] 5: 6 tham số (tất cả tùy chọn) 6 parameters (all optional)

  1. Tính minh bạch: Xác định độ trong suốt của lớp phủ HeamAP (thấp hơn -> trong suốt hơn, mặc định là 0,7) define the transparency of heamap overlay (lower -> more transparent, default is 0.7)
  2. color_map: kiểu bản đồ màu (mặc định là BWR) color map style (default is bwr)
  3. show_axis: hiển thị trục hay không (Boolean lab = cv2.cvtColor(img, cv2.COLOR_BGR2LAB) a_component = lab[:,:,1] th = cv2.threshold(a_component,140,255,cv2.THRESH_BINARY)[1] 6, mặc định là lab = cv2.cvtColor(img, cv2.COLOR_BGR2LAB) a_component = lab[:,:,1] th = cv2.threshold(a_component,140,255,cv2.THRESH_BINARY)[1] 7) show axis or not (boolean lab = cv2.cvtColor(img, cv2.COLOR_BGR2LAB) a_component = lab[:,:,1] th = cv2.threshold(a_component,140,255,cv2.THRESH_BINARY)[1] 6, default is lab = cv2.cvtColor(img, cv2.COLOR_BGR2LAB) a_component = lab[:,:,1] th = cv2.threshold(a_component,140,255,cv2.THRESH_BINARY)[1] 7)
  4. show_original: hiển thị hình ảnh gốc (Boolean lab = cv2.cvtColor(img, cv2.COLOR_BGR2LAB) a_component = lab[:,:,1] th = cv2.threshold(a_component,140,255,cv2.THRESH_BINARY)[1] 6, mặc định là lab = cv2.cvtColor(img, cv2.COLOR_BGR2LAB) a_component = lab[:,:,1] th = cv2.threshold(a_component,140,255,cv2.THRESH_BINARY)[1] 7) show original image (boolean lab = cv2.cvtColor(img, cv2.COLOR_BGR2LAB) a_component = lab[:,:,1] th = cv2.threshold(a_component,140,255,cv2.THRESH_BINARY)[1] 6, default is lab = cv2.cvtColor(img, cv2.COLOR_BGR2LAB) a_component = lab[:,:,1] th = cv2.threshold(a_component,140,255,cv2.THRESH_BINARY)[1] 7)
  5. show_colorbar: hiển thị thanh màu (Boolean lab = cv2.cvtColor(img, cv2.COLOR_BGR2LAB) a_component = lab[:,:,1] th = cv2.threshold(a_component,140,255,cv2.THRESH_BINARY)[1] 6, mặc định là lab = cv2.cvtColor(img, cv2.COLOR_BGR2LAB) a_component = lab[:,:,1] th = cv2.threshold(a_component,140,255,cv2.THRESH_BINARY)[1] 7) show color bar (boolean lab = cv2.cvtColor(img, cv2.COLOR_BGR2LAB) a_component = lab[:,:,1] th = cv2.threshold(a_component,140,255,cv2.THRESH_BINARY)[1] 6, default is lab = cv2.cvtColor(img, cv2.COLOR_BGR2LAB) a_component = lab[:,:,1] th = cv2.threshold(a_component,140,255,cv2.THRESH_BINARY)[1] 7)
  6. Width_Pad: Đệm chiều rộng (mặc định là 0, được đặt thành giá trị âm để giảm khoảng cách giữa các hình) the width padding (default is 0, set to negative value for reducing the space between figures)

lab = cv2.cvtColor(img, cv2.COLOR_BGR2LAB) a_component = lab[:,:,1] th = cv2.threshold(a_component,140,255,cv2.THRESH_BINARY)[1] 0

lab = cv2.cvtColor(img, cv2.COLOR_BGR2LAB) a_component = lab[:,:,1] th = cv2.threshold(a_component,140,255,cv2.THRESH_BINARY)[1] 1

Phương pháp 2 blur = cv2.GaussianBlur(th,(13,13), 11) 2: 1 Yêu cầu, 8+ tùy chọn* 1 required, 8+ optional*

yêu cầu

  1. Tên tệp: Tên tệp cho Hình đã lưu (Chuỗi) filename for saved figure (string)

optinal:

  1. save_path: thư mục lưu (mặc định là thư mục làm việc hiện tại) figure saving directory (default is the current working directory)
  2. Formate: Hình FOMATE (JPG, JPEG, PNG, PDF, PS, EPS và SVG), mặc định là 'PNG' figure saving fomate (jpg, jpeg, png, pdf, ps, eps and svg), default is 'png'
  3. Tính minh bạch: Xác định độ trong suốt của lớp phủ HeamAP (thấp hơn -> trong suốt hơn, mặc định là 0,7) define the transparency of heamap overlay (lower -> more transparent, default is 0.7)
  4. color_map: kiểu bản đồ màu (mặc định là BWR) color map style (default is bwr)
  5. show_axis: hiển thị trục hay không (Boolean lab = cv2.cvtColor(img, cv2.COLOR_BGR2LAB) a_component = lab[:,:,1] th = cv2.threshold(a_component,140,255,cv2.THRESH_BINARY)[1] 6, mặc định là lab = cv2.cvtColor(img, cv2.COLOR_BGR2LAB) a_component = lab[:,:,1] th = cv2.threshold(a_component,140,255,cv2.THRESH_BINARY)[1] 7) show axis or not (boolean lab = cv2.cvtColor(img, cv2.COLOR_BGR2LAB) a_component = lab[:,:,1] th = cv2.threshold(a_component,140,255,cv2.THRESH_BINARY)[1] 6, default is lab = cv2.cvtColor(img, cv2.COLOR_BGR2LAB) a_component = lab[:,:,1] th = cv2.threshold(a_component,140,255,cv2.THRESH_BINARY)[1] 7)
  6. show_original: hiển thị hình ảnh gốc (Boolean lab = cv2.cvtColor(img, cv2.COLOR_BGR2LAB) a_component = lab[:,:,1] th = cv2.threshold(a_component,140,255,cv2.THRESH_BINARY)[1] 6, mặc định là lab = cv2.cvtColor(img, cv2.COLOR_BGR2LAB) a_component = lab[:,:,1] th = cv2.threshold(a_component,140,255,cv2.THRESH_BINARY)[1] 7) show original image (boolean lab = cv2.cvtColor(img, cv2.COLOR_BGR2LAB) a_component = lab[:,:,1] th = cv2.threshold(a_component,140,255,cv2.THRESH_BINARY)[1] 6, default is lab = cv2.cvtColor(img, cv2.COLOR_BGR2LAB) a_component = lab[:,:,1] th = cv2.threshold(a_component,140,255,cv2.THRESH_BINARY)[1] 7)
  7. show_colorbar: hiển thị thanh màu (Boolean lab = cv2.cvtColor(img, cv2.COLOR_BGR2LAB) a_component = lab[:,:,1] th = cv2.threshold(a_component,140,255,cv2.THRESH_BINARY)[1] 6, mặc định là lab = cv2.cvtColor(img, cv2.COLOR_BGR2LAB) a_component = lab[:,:,1] th = cv2.threshold(a_component,140,255,cv2.THRESH_BINARY)[1] 7) show color bar (boolean lab = cv2.cvtColor(img, cv2.COLOR_BGR2LAB) a_component = lab[:,:,1] th = cv2.threshold(a_component,140,255,cv2.THRESH_BINARY)[1] 6, default is lab = cv2.cvtColor(img, cv2.COLOR_BGR2LAB) a_component = lab[:,:,1] th = cv2.threshold(a_component,140,255,cv2.THRESH_BINARY)[1] 7)
  8. Width_Pad: Đệm chiều rộng (mặc định là 0, được đặt thành giá trị âm để giảm khoảng cách giữa các hình) the width padding (default is 0, set to negative value for reducing the space between figures)
  9. Phương pháp 2 blur = cv2.GaussianBlur(th,(13,13), 11) 2: 1 Yêu cầu, 8+ tùy chọn*

lab = cv2.cvtColor(img, cv2.COLOR_BGR2LAB) a_component = lab[:,:,1] th = cv2.threshold(a_component,140,255,cv2.THRESH_BINARY)[1] 2

lab = cv2.cvtColor(img, cv2.COLOR_BGR2LAB) a_component = lab[:,:,1] th = cv2.threshold(a_component,140,255,cv2.THRESH_BINARY)[1] 3

Làm thế nào để bạn hiển thị bản đồ nhiệt của một hình ảnh trong Python?

Làm thế nào để bạn tạo một bản đồ nhiệt trong Python ?..
Bước 1 - Nhập các gói Python cần thiết ..
Bước 2 - Tải bộ dữ liệu ..
Bước - 3 Tạo một mảng python numpy ..
Bước 4 - Tạo một trục trong Python ..
Bước 5 - Tạo một mảng để chú thích bản đồ nhiệt ..
Bước 6 - Tạo hình Matplotlib và xác định cốt truyện ..

Bản đồ nhiệt trong xử lý hình ảnh là gì?

Bản đồ nhiệt (hoặc bản đồ nhiệt) là một kỹ thuật trực quan hóa dữ liệu cho thấy độ lớn của một hiện tượng là màu theo hai chiều.Sự thay đổi về màu sắc có thể là theo màu sắc hoặc cường độ, mang lại các tín hiệu trực quan rõ ràng cho người đọc về cách hiện tượng được phân cụm hoặc thay đổi trên không gian.a data visualization technique that shows magnitude of a phenomenon as color in two dimensions. The variation in color may be by hue or intensity, giving obvious visual cues to the reader about how the phenomenon is clustered or varies over space.

Chủ đề