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')

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

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]

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

Áp dụng Gaussian Blur:

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

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

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

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

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

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)

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

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

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

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

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

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à:

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

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

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

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

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

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

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

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.