C_and_CPP 板


LINE

※ 引述《yanqinru (髍鵀)》之铭言: : 各位板友好 : 小弟是刚学影像处理的新手 : 目前在研究杂讯程式碰到了许多问题 : 虽然有对照书本写的杂讯公式来看 : 可是还是不知道以下三段程式是怎麽做加入杂讯运算 : 首先是Impulse noise的部份 : level值算是强度吗?那麽它有特定范围吗? : 在这段程式里有写到pix = cp*x : cp是定义的色平面,那将它乘以x可以得到什麽? : 再者是Gaussian noise : _ : 书本写高斯杂讯为p(z)=((1/2^0.5)*标准差)*e^(-(z-z)^2)/2*标准差^2 : 可是对照下面的程式 : 一开始定义的mean和sd是什麽? : 然後在程式里的运算 : sqrt12和sqrt10是代表什麽?是要再另外定义它成为某个数字还是??? : 我真的不太清楚这样的写法跟书本的公式有什麽关联性 : 如果有板友了解的话可以帮我解惑吗 : 最後是Uniform Noise的部份 : 一样是不清楚公式跟程式的关连性... : 虽然说mean和sd是要输入的值 : 可是他们主要是代表控制什麽? : 然後在回圈里的ran到sum3=...应该是在计算p(z) : 可是我研究许久还是不懂到底程式是怎麽表达p(z)... : (Impulse Noise) : prob = StrToInt(Form11->Edit1->Text); : level = StrToInt(Form11->Edit2->Text); : randomize(); : for (int y = 0;y < nBitmap->Height;y++) : { : aptr = (Byte*)nBitmap->ScanLine[y]; : for (int x = 0;x < nBitmap->Width;x++) : if (random(100) <= prob) : { : pix1 = cp * x; x是座标,乘以cp,设为pix1,而pix1又把它当作新的x座标 所以很明显,cp是位移的参数 这样影像之後又会累加上level,所以你这张图会一直被之後的座标影响,if cp>1 if cp<1 你的影像应该後面很容易全部变成255 : aptr[pix1] = (Byte)(aptr[pix1]+level); : aptr[pix1+1] = (Byte)(aptr[pix1+1]+level); : aptr[pix1+2] = (Byte)(aptr[pix1+2]+level); : } : } : (Gaussian Noise) : mean = StrToInt(Form11->Edit1->Text); : sd = StrToFloat(Form11->Edit2->Text); : //ShowMessage("Mean = "+IntToStr(mean)+",\nSD ="+FloatToStr(sd)+"."); : randomize(); : for (int y = 0;y < nBitmap->Height;y++) : { : aptr = (Byte*)nBitmap->ScanLine[y]; : for (int x = 0;x < nBitmap->Width;x++) : { : total = 0.0; : for (int k = 0;k < 10;k++) : { : ran = (float)(random(100)+1) / 100; : total += (float)sqrt12 * sd * (ran - 0.5); : } 这一段就是很无聊的加十次rand杂讯,所以你的sqrt12和sqrt10应该都只是权重质 srqt12越大且sqrt10越小,杂讯就越大 反之就越小 : total /= (float)sqrt10; : total += (float)mean; : pix1 = cp * x; : sum1 = total+(float)aptr[pix1]; : sum2 = total+(float)aptr[pix1+1]; : sum3 = total+(float)aptr[pix1+2]; : if (sum1 < 0.0) sum1 = 0.0; : if (sum2 < 0.0) sum2 = 0.0; : if (sum3 < 0.0) sum3 = 0.0; : aptr[pix1] = (Byte)(sum1); : aptr[pix1+1] = (Byte)(sum2); : aptr[pix1+2] = (Byte)(sum3); : } : } : (Uniform Noise) : mean = StrToInt(Form11->Edit1->Text); : sd = StrToFloat(Form11->Edit2->Text); : randomize(); : for (int y = 0;y < nBitmap->Height;y++) : { : aptr = (Byte*)nBitmap->ScanLine[y]; : for (int x = 0;x < nBitmap->Width;x++) : { : ran = (float)(random(100)+1) / 100; : total = ran - 0.5; : total *= (float)sqrt12; : total *= sd; : total += (float)mean; : pix1 = cp * x; 这个很明显的就是前面两招合在一起 给你自己去思考吧,这都很简单,没有很难 : sum1 = total+(float)aptr[pix1]; : sum2 = total+(float)aptr[pix1+1]; : sum3 = total+(float)aptr[pix1+2]; : if (sum1 < 0.0) sum1 = 0.0; : if (sum2 < 0.0) sum2 = 0.0; : if (sum3 < 0.0) sum3 = 0.0; : aptr[pix1] = (Byte)(sum1); : aptr[pix1+1] = (Byte)(sum2); : aptr[pix1+2] = (Byte)(sum3); : } : } : 以上几个问题烦请板友帮小弟解惑 : 不好意思一次问太多问题了... : 小弟仅能尽量以微薄的P币答谢回答问题的板友 : 感谢大家 --



※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 122.116.236.164







like.gif 您可能会有兴趣的文章
icon.png[问题/行为] 猫晚上进房间会不会有憋尿问题
icon.pngRe: [闲聊] 选了错误的女孩成为魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一张
icon.png[心得] EMS高领长版毛衣.墨小楼MC1002
icon.png[分享] 丹龙隔热纸GE55+33+22
icon.png[问题] 清洗洗衣机
icon.png[寻物] 窗台下的空间
icon.png[闲聊] 双极の女神1 木魔爵
icon.png[售车] 新竹 1997 march 1297cc 白色 四门
icon.png[讨论] 能从照片感受到摄影者心情吗
icon.png[狂贺] 贺贺贺贺 贺!岛村卯月!总选举NO.1
icon.png[难过] 羡慕白皮肤的女生
icon.png阅读文章
icon.png[黑特]
icon.png[问题] SBK S1安装於安全帽位置
icon.png[分享] 旧woo100绝版开箱!!
icon.pngRe: [无言] 关於小包卫生纸
icon.png[开箱] E5-2683V3 RX480Strix 快睿C1 简单测试
icon.png[心得] 苍の海贼龙 地狱 执行者16PT
icon.png[售车] 1999年Virage iO 1.8EXi
icon.png[心得] 挑战33 LV10 狮子座pt solo
icon.png[闲聊] 手把手教你不被桶之新手主购教学
icon.png[分享] Civic Type R 量产版官方照无预警流出
icon.png[售车] Golf 4 2.0 银色 自排
icon.png[出售] Graco提篮汽座(有底座)2000元诚可议
icon.png[问题] 请问补牙材质掉了还能再补吗?(台中半年内
icon.png[问题] 44th 单曲 生写竟然都给重复的啊啊!
icon.png[心得] 华南红卡/icash 核卡
icon.png[问题] 拔牙矫正这样正常吗
icon.png[赠送] 老莫高业 初业 102年版
icon.png[情报] 三大行动支付 本季掀战火
icon.png[宝宝] 博客来Amos水蜡笔5/1特价五折
icon.pngRe: [心得] 新鲜人一些面试分享
icon.png[心得] 苍の海贼龙 地狱 麒麟25PT
icon.pngRe: [闲聊] (君の名は。雷慎入) 君名二创漫画翻译
icon.pngRe: [闲聊] OGN中场影片:失踪人口局 (英文字幕)
icon.png[问题] 台湾大哥大4G讯号差
icon.png[出售] [全国]全新千寻侘草LED灯, 水草

请输入看板名称,例如:Gossiping站内搜寻

TOP