找回密码
 立即注册
查看: 643|回复: 6

整张图片取模数字边缘光滑,数字单独取模送显后边缘有毛刺

[复制链接]
  • 打卡等级:常住居民II
  • 打卡总天数:83
  • 最近打卡:2025-06-28 08:54:22

17

主题

29

回帖

291

积分

中级会员

积分
291
发表于 2024-10-29 08:02:02 | 显示全部楼层 |阅读模式
3.png
回复

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:480
  • 最近打卡:2025-06-28 00:00:59
已绑定手机

80

主题

5214

回帖

9305

积分

超级版主

DebugLab

积分
9305
发表于 2024-10-29 09:02:44 | 显示全部楼层
应该是像素数的问题
DebugLab
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:常住居民II
  • 打卡总天数:83
  • 最近打卡:2025-06-28 08:54:22

17

主题

29

回帖

291

积分

中级会员

积分
291
发表于 2024-10-29 10:07:18 | 显示全部楼层
不知是否跟RGB565有关,为节省CPU空间,我用的是单一色
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:446
  • 最近打卡:2025-06-28 09:38:56

29

主题

344

回帖

2869

积分

荣誉版主

积分
2869
发表于 2024-10-29 11:01:58 | 显示全部楼层
彩屏的话可能跟图片有关,如果是JPG图片,一些边边角角会有过渡色,让边缘显得顺滑。如果用单色取模,过渡色没有了,就显出锯齿了。
能体会到发现一个不理解的现象然后找原因然后要么解决掉问题要么被问题解决掉的那种快乐是我的幸运
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:常住居民II
  • 打卡总天数:83
  • 最近打卡:2025-06-28 08:54:22

17

主题

29

回帖

291

积分

中级会员

积分
291
发表于 2024-10-29 13:32:35 | 显示全部楼层
我用的是PNG,这有过度色吗?或者有办法把过度色转变成单色的笔画吗?

点评

有过渡色。PNG这是最后保存图片的格式,会保留保存前的图片信息,过渡色会根据PNG格式的位数,变成对应的色阶。 在取模工具里,比如STC-ISP或者Img2Lcd,可以在单色模式下,通过拖动亮度对比度等参数的滑条,来决定  详情 回复 发表于 2024-11-5 09:05
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:446
  • 最近打卡:2025-06-28 09:38:56

29

主题

344

回帖

2869

积分

荣誉版主

积分
2869
发表于 2024-11-5 09:05:05 | 显示全部楼层
本帖最后由 大明狐 于 2024-11-5 09:06 编辑
智胜*** 发表于 2024-10-29 13:32
我用的是PNG,这有过度色吗?或者有办法把过度色转变成单色的笔画吗?

有过渡色。PNG只是最后保存图片的格式,会保留保存前的图片信息,过渡色会根据PNG格式的位数,变成对应的色阶。

在取模工具里,比如STC-ISP或者Img2Lcd,可以在单色模式下,通过拖动亮度对比度等参数的滑条,来决定把过渡色的色阶归为1还是0。
毕竟滑条操作精度有限,如果有更高要求,最好是在PS之类处理软件进行更细致的调整。

不过,只要是单色,就必然有锯齿。“抗锯齿”就是通过用过渡色填充单色锯齿的“缝隙”实现的(就像近视眼摘掉眼镜会看得更顺滑)。
弥补方法要么距离足够远或者增加匀光的遮挡物(不现实),要么使用灰色之类让图案的边缘对比不那么强烈的背景色,欺骗眼睛。

能体会到发现一个不理解的现象然后找原因然后要么解决掉问题要么被问题解决掉的那种快乐是我的幸运
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:5
  • 最近打卡:2025-06-28 14:16:41

1

主题

22

回帖

103

积分

注册会员

积分
103
发表于 昨天 14:23 | 显示全部楼层
文字转成图片,图片用Image2Lcd转灰度图,然后把灰度数据当作alpha通道用,显示出来的字没锯齿,也能换颜色
  1. /**
  2. * @brief  显示灰度文字图片,模拟AA效果
  3. * @param  x      起始X坐标
  4. * @param  y      起始Y坐标
  5. * @param  w      图片宽度
  6. * @param  h      图片高度
  7. * @param  *gray  指向灰度图数组
  8. * @param  fColor 前景色 RGB565
  9. * @param  bColor 背景色 RGB565
  10. * @retval 无
  11. */
  12. void LCD_Show4GrayPicture3(u16 x, u16 y, u16 w, u16 h, const u8 *gray, u16 fColor, u16 bColor)
  13. {
  14.     u32 i, j;
  15.     u16 r1, g1, b1;
  16.     u16 r2, g2, b2;
  17.         u16 bytesPerLine;
  18.         u32 byteIndex;
  19.         u8 pixelData;
  20.         u8 shift;
  21.     u16 r, g, b;
  22.     u8 grayVal, alpha;
  23.     u16 color;
  24.     // 提取前景色分量
  25.     r1 = (fColor >> 11) & 0x1F;
  26.     g1 = (fColor >> 5)  & 0x3F;
  27.     b1 =  fColor        & 0x1F;
  28.     // 提取背景色分量
  29.     r2 = (bColor >> 11) & 0x1F;
  30.     g2 = (bColor >> 5)  & 0x3F;
  31.     b2 =  bColor        & 0x1F;
  32.     // 每行字节数
  33.     bytesPerLine = (w + 3) / 4;
  34.     LCD_Address_Set(x, y, x + w - 1, y + h - 1);
  35.     for (i = 0; i < h; i++)
  36.     {
  37.         for (j = 0; j < w; j++)
  38.         {
  39.             byteIndex = i * bytesPerLine + (j / 4);
  40.             pixelData = gray[byteIndex];
  41.             shift = (3 - (j % 4)) * 2;
  42.             grayVal = (pixelData >> shift) & 0x03;
  43.             // 灰度映射 0~3 => 0, 85, 170, 255
  44.             alpha = grayVal * 85;
  45.             // 简单Alpha混合
  46.             r = (r1 * alpha + r2 * (255 - alpha)) / 255;
  47.             g = (g1 * alpha + g2 * (255 - alpha)) / 255;
  48.             b = (b1 * alpha + b2 * (255 - alpha)) / 255;
  49.             color = ((r & 0x1F) << 11) | ((g & 0x3F) << 5) | (b & 0x1F);
  50.             LCD_WR_DATA16(color);
  51.         }
  52.     }
  53. }
复制代码
回复 支持 反对

使用道具 举报 送花

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|小黑屋|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

GMT+8, 2025-6-29 08:08 , Processed in 1.092612 second(s), 87 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表