You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

不使用平均色彩的图像缩放:300×300热图转10×10的实现难题

问题:保留色彩的热图缩放需求与解决思路

需求描述

  • 将300×300像素的热图缩放至10×10尺寸
  • 必须保留原有的3种色彩
  • 色彩区域的位置需与原图大致相符

原热图(简化为3种颜色)

原热图

常规缩放的问题

使用cv2.resize(img, (ws,hs), interpolation = cv2.INTER_AREA)缩放后,得到平均色彩图像——位置接近原图,但色彩被平均,不符合需求:
平均色彩缩放结果

尝试方法的问题

自行尝试的方法能保留原色彩,但色彩位置混乱:
保留色彩但位置混乱的结果

现有基础信息

  • 三种颜色的R值(图像以300×300数组data_2_2_dim存储,仅保存R值):
    • Normal: 68
    • Minor: 44
    • Major: 232
  • 核心思路:将原图划分为30×30的子数组,每个子数组对应10×10目标数组data_3_2_dim的一个单元格
  • 色彩优先级:Major > Minor > Normal(子数组中存在Major则对应单元格设为Major,以此类推)

现有实现代码

iter1 = 0 
iter2 = 0 

for i in range(data_3_2_dim.shape[0]):
    for j in range(data_3_2_dim.shape[1]):
        draft = np.zeros((30, 30))
        val_no = 0 
        val_minor = 0
        val_major = 0
        for k in range(30): 
            for l in range(30): 
                # val = 68
                if data_2_2_dim[iter1][iter2] == 44 and data_2_2_dim[iter1][iter2] != 232: 
                    val = 44 
                    
                if data_2_2_dim[iter1][iter2] == 232: 
                    val = 232 
                    
                if data_2_2_dim[iter1][iter2] == 68 and data_2_2_dim[iter1][iter2] != 232 and data_2_2_dim[iter1][iter2] != 44: 
                    val = 68 
                    
                draft[k][l] = val

        
            iter1+=1
        
        major = False 
        minor = False
        
        for p in range(draft.shape[0]): 
            for q in range(draft.shape[1]): 
                if draft[p][q] == 232: 
                    major = True
                if draft[p][q] == 44: 
                    minor = True
        
        if minor == True and major == False: 
            data_3_2_dim[j][i] = 44 
        elif major == True: 
            data_3_2_dim[j][i] = 232
        else: 
            data_3_2_dim[j][i] = 68 
            
        
        iter2+=1
    iter1 = 0

from matplotlib import pyplot as plt
from matplotlib import colors
import numpy as np

fig, ax = plt.subplots()
ax.imshow(data_3_2_dim) 
plt.show()

待解决问题

需要实现既保留原3种色彩,又使色彩位置与原图大致匹配的10×10图像缩放。

内容的提问来源于stack exchange,提问作者Moontasir Soumik

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.07 05:01:41