社区
GAME,图形处理/多媒体
帖子详情
代码实现将模糊图象变清晰的问题。求助!
lainpo
2005-04-28 09:59:30
代码实现将模糊图象变清晰的问题。求助!
...全文
239
11
打赏
收藏
代码实现将模糊图象变清晰的问题。求助!
代码实现将模糊图象变清晰的问题。求助!
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
11 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
lainpo
2005-04-28
打赏
举报
回复
没有人来,自己先顶顶!
lainpo
2005-04-28
打赏
举报
回复
在delphi报表中可不可以将图片打印的接近与Acdsee的清晰度?谢谢各位大侠小侠!
S.F.
2005-04-28
打赏
举报
回复
同意extcsdn ,使用锐化算法
uses math;
procedure TForm1.Button2Click(Sender: TObject);
var
bmp1, bmp2: Tbitmap;
p1, p2, p3, p4: pbytearray;
//定义四个pbytearray类型变量
i, j, z: integer;
y: array[0..8] of integer;
begin
y[0] := 0; y[1] := -1; y[2] := 0;
y[3] := -1; y[4] := 5; y[5] := -1;
y[6] := 0; y[5] := -1; y[8] := 0;
//卷积矩阵
z := 1;
//卷积核
bmp1 := Tbitmap.Create;
bmp2 := Tbitmap.Create;
bmp1.Assign(image1.Picture.Bitmap);
bmp1.PixelFormat := pf24bit;
//24为格式便于处理
bmp1.Width := image1.Picture.Graphic.Width;
bmp1.Height := image1.Picture.Graphic.Height;
bmp2.Assign(bmp1);
//备用的位图
bmp2.PixelFormat := pf24bit;
for j := 1 to bmp1.Height - 2 do
begin
p1 := bmp1.ScanLine[j];
//第一条扫描线
p2 := bmp2.ScanLine[j - 1];
//第二条扫描线,为了防止数据变化,在备用位图上操作
p3 := bmp2.ScanLine[j];
p4 := bmp2.ScanLine[j + 1];
//第三条扫描线
//三条相邻的扫描线
for i := 1 to bmp1.Width - 2 do
begin
//进行卷积操作获取新的象素值
p1[3 * i + 2] := min(255, max(0, ((y[0] * p2[3 * (i - 1) + 2]
+
y[1] * p2[3 * i + 2] + y[2] * p2[3 * (i + 1) + 2] + y[3]
* p3[3
* (i - 1)
+ 2] + y[4] * p3[3 * i + 2] + y[5] * p3[3 * (i + 1) +
2] +
y[6]
* p4[3
* (i - 1) + 2] + y[5] * p4[3 * i + 2] + y[8] * p4[3 * (i
+
1) + 2]))
div
z));
//重新算出红色分量
p1[3 * i + 1] := min(255, max(0, ((y[0] * p2[3 * (i - 1) + 1]
+
y[1] * p2[3 * i + 1] + y[2] * p2[3 * (i + 1) + 1] + y[3]
* p3[3
* (i - 1)
+ 1] + y[4] * p3[3 * i + 1] + y[5] * p3[3 * (i + 1) +
1] +
y[6]
* p4[3
* (i - 1) + 1] + y[5] * p4[3 * i + 1] + y[8] * p4[3 * (i
+
1) + 1]))
div
z));
//重新算出蓝色分量
p1[3 * i] := min(255, max(0, ((y[0] * p2[3 * (i - 1)] + y[1]
*
p2[3 * i] + y[2] * p2[3 * (i + 1)] + y[3] * p3[3 * (i -
1)] +
y[4] * p3[3
* i] + y[5] * p3[3 * (i + 1)] + y[6] * p4[3 * (i - 1)] +
y[5]
* p4[3 * i]
+ y[8] * p4[3 * (i + 1)])) div z));
//重新算出绿色分量
end;
end;
Image2.Picture.Bitmap.Assign(Bmp1);
//重新显示
Image2.Invalidate;
Bmp1.Free;
bmp2.Free;
//释放资源
end;
Rex_love_Burger
2005-04-28
打赏
举报
回复
锐化
constantine
2005-04-28
打赏
举报
回复
不可能的,信息已经损失了
xzhifei
2005-04-28
打赏
举报
回复
这是不可能的,哈哈哈
XINGXIMU
2005-04-28
打赏
举报
回复
可以试试图像的平滑和滤波
下面时平滑的例子
var
bmp1, bmp2: Tbitmap;
p1, p2, p3, p4: pbytearray;
i, j, z: integer;
y: array[0..8] of integer;
begin
y[0] := 1;
y[1] := 2;
y[2] := 1;
y[3] := 2;
y[4] := 4;
y[5] := 2;
y[6] := 1;
y[7] := 2;
y[8] := 1;
z := 16;
bmp1 := Tbitmap.Create;
bmp2 := Tbitmap.Create;
bmp1.Assign(image1.Picture.Bitmap);
bmp1.PixelFormat := pf24bit;
bmp1.Width := image1.Picture.Graphic.Width;
bmp1.Height := image1.Picture.Graphic.Height;
bmp2.Assign(bmp1);
bmp2.PixelFormat := pf24bit;
for j := 1 to bmp1.Height - 2 do
begin
p1 := bmp1.ScanLine[j];
p2 := bmp2.ScanLine[j - 1];
p3 := bmp2.ScanLine[j];
p4 := bmp2.ScanLine[j + 1];
for i := 1 to bmp1.Width - 2 do
begin
p1[3 * i + 2] := min(255, max(0, ((y[0] * p2[3 * (i - 1) + 2]
+
y[1] * p2[3 * i + 2] + y[2] * p2[3 * (i + 1) + 2] + y[3]
* p3[3
* (i - 1)
+ 2] + y[4] * p3[3 * i + 2] + y[5] * p3[3 * (i + 1) +
2] +
y[6]
* p4[3
* (i - 1) + 2] + y[7] * p4[3 * i + 2] + y[8] * p4[3 * (i
+
1) + 2]))
div
z));
p1[3 * i + 1] := min(255, max(0, ((y[0] * p2[3 * (i - 1) + 1]
+
y[1] * p2[3 * i + 1] + y[2] * p2[3 * (i + 1) + 1] + y[3]
* p3[3
* (i - 1)
+ 1] + y[4] * p3[3 * i + 1] + y[5] * p3[3 * (i + 1) +
1] +
y[6]
* p4[3
* (i - 1) + 1] + y[7] * p4[3 * i + 1] + y[8] * p4[3 * (i
+
1) + 1]))
div
z));
p1[3 * i] := min(255, max(0, ((y[0] * p2[3 * (i - 1)] + y[1]
*
p2[3 * i] + y[2] * p2[3 * (i + 1)] + y[3] * p3[3 * (i -
1)] +
y[4] * p3[3
* i] + y[5] * p3[3 * (i + 1)] + y[6] * p4[3 * (i - 1)] +
y[7]
* p4[3 * i]
+ y[8] * p4[3 * (i + 1)])) div z));
end;
end;
Image2.Picture.Bitmap.Assign(Bmp1);
Image2.Invalidate;
Bmp1.Free;
bmp2.Free;
end;
lainpo
2005-04-28
打赏
举报
回复
标题写错了,是将模糊图片变清晰的问题。谢谢!
fengzhengren
2005-04-28
打赏
举报
回复
这是一个比较通用的方法,有一定效果,但不会最好,最好的方法是知道造成模糊的原因,比如是运动模糊,就得用运动模糊校正方法进行校正.
fengzhengren
2005-04-28
打赏
举报
回复
也就是使你低于某象素值的点的象素值减去一个数,高于某象素值的点的加上一个数。
fengzhengren
2005-04-28
打赏
举报
回复
可以增加对比度。
【
模糊
聚类】基于matlab
模糊
C均值聚类(FCM)【含Matlab源码 2724期】.zip
代码
下载:完整
代码
,可直接运行 ;运行版本:2014a或2019b;若运行有
问题
,可私信博主;...海神之光擅长领域擅长路径规划、优化求解、神经网络预测、图像处理、语音处理等多种领域Matlab仿真,具体
代码
仿真 私信博主。
【故障诊断】基于matlab FCM
模糊
聚类算法轴承故障诊断【含Matlab源码 2725期】.zip
代码
下载:完整
代码
,可直接运行 ;运行版本:2014a或2019b;若运行有
问题
,可私信博主;...海神之光擅长领域擅长路径规划、优化求解、神经网络预测、图像处理、语音处理等多种领域Matlab仿真,具体
代码
仿真 私信博主。
matab图像专题精讲
课程内容主要包括入门MATLAB图像处理图像类型转换、图像处理图像的基本操作、MATLAB图像处理常用技巧、MATLAB...
模糊
噪声彩色图像进行恢复、通过拉伸
实现
对比度增强、图像锐化
实现
对比度增强、伪彩色增强
实现
图像增强等...
用于图像恢复的图像层次结构的高效和显式建模Efficient and Explicit Modelling of Image Hierarchies for Image Restoration
图像恢复旨在从低质量图像中恢复高质量图像,这些图像是由图像退化过程(如
模糊
、子采样、噪声干扰和JPEG压缩)引起的。图像恢复是一个不适定逆
问题
,因为在图像退化过程中,有关图像的重要内容信息丢失。因此,为了...
修图神器—超简单
实现
华为HMS ML Kit图像超分辨率
不知道大家有没有遇到这样的情况,图片压缩接收下载后
清晰
度骤降,画质
模糊
,更不用说放大浏览了。最近小编就遇到了啊,收到朋友发送的旅游合照压缩包,打开后,OMG,这昏暗的场景、黑黑的人像、
模糊
的画面,怎么让...
GAME,图形处理/多媒体
1,183
社区成员
14,336
社区内容
发帖
与我相关
我的任务
GAME,图形处理/多媒体
Delphi GAME,图形处理/多媒体
复制链接
扫一扫
分享
社区描述
Delphi GAME,图形处理/多媒体
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章