void CISLSView::OnTopHatA()
{
//顶帽变换
//李立宗 lilizong@gmail.com
//2012-8-23
CImage topHatImage;
OnOpeningGray();
int maxY = myImage1.GetHeight();
int maxX=myImage1.GetWidth();
byte* pRealData1;
byte* pRealData2;
pRealData1=(byte*)myImage1.GetBits();
pRealData2=(byte*)myImage2.GetBits();
int pit1=myImage1.GetPitch();
int pit2=myImage2.GetPitch();
int bitCount1=myImage1.GetBPP()/8;
int bitCount2=myImage2.GetBPP()/8;
int tempMyImage1,tempMyImage2,temp;
for (int y=0; y<maxY; y++) {
for (int x=0; x<maxX; x++) {
tempMyImage1=*(pRealData1+pit1*(y)+(x)*bitCount1);
tempMyImage2=*(pRealData2+pit2*(y)+(x)*bitCount2);
temp=tempMyImage1-tempMyImage2;
*(pRealData2+pit2*(y)+(x)*bitCount2)=temp;
*(pRealData2+pit2*(y)+(x)*bitCount2+1)=temp;
*(pRealData2+pit2*(y)+(x)*bitCount2+2)=temp;
}
}
Invalidate();
}
void CISLSView::OnTopHatB()
{
//顶帽变换
//李立宗 lilizong@gmail.com
//2012-8-23
CImage topHatImage;
OnOpeningGray();
int maxY = myImage1.GetHeight();
int maxX=myImage1.GetWidth();
byte* pRealData1;
byte* pRealData2;
pRealData1=(byte*)myImage1.GetBits();
pRealData2=(byte*)myImage2.GetBits();
int pit1=myImage1.GetPitch();
int pit2=myImage2.GetPitch();
int bitCount1=myImage1.GetBPP()/8;
int bitCount2=myImage2.GetBPP()/8;
int tempMyImage1,tempMyImage2,temp;
for (int y=0; y<maxY; y++) {
for (int x=0; x<maxX; x++) {
tempMyImage1=*(pRealData1+pit1*(y)+(x)*bitCount1);
tempMyImage2=*(pRealData2+pit2*(y)+(x)*bitCount2);
temp=tempMyImage1-tempMyImage2;
temp=abs(temp);
*(pRealData2+pit2*(y)+(x)*bitCount2)=temp;
*(pRealData2+pit2*(y)+(x)*bitCount2+1)=temp;
*(pRealData2+pit2*(y)+(x)*bitCount2+2)=temp;
}
}
Invalidate();
}
void CISLSView::OnTopHatC()
{
//顶帽变换
//李立宗 lilizong@gmail.com
//2012-8-23
CImage topHatImage;
OnClosingGray();
int maxY = myImage1.GetHeight();
int maxX=myImage1.GetWidth();
byte* pRealData1;
byte* pRealData2;
pRealData1=(byte*)myImage1.GetBits();
pRealData2=(byte*)myImage2.GetBits();
int pit1=myImage1.GetPitch();
int pit2=myImage2.GetPitch();
int bitCount1=myImage1.GetBPP()/8;
int bitCount2=myImage2.GetBPP()/8;
int tempMyImage1,tempMyImage2,temp;
for (int y=0; y<maxY; y++) {
for (int x=0; x<maxX; x++) {
tempMyImage1=*(pRealData1+pit1*(y)+(x)*bitCount1);
tempMyImage2=*(pRealData2+pit2*(y)+(x)*bitCount2);
temp=tempMyImage1-tempMyImage2;
*(pRealData2+pit2*(y)+(x)*bitCount2)=temp;
*(pRealData2+pit2*(y)+(x)*bitCount2+1)=temp;
*(pRealData2+pit2*(y)+(x)*bitCount2+2)=temp;
}
}
Invalidate();
}
void CISLSView::OnTopHatD()
{
//顶帽变换
//李立宗 lilizong@gmail.com
//2012-8-23
CImage topHatImage;
OnClosingGray();
int maxY = myImage1.GetHeight();
int maxX=myImage1.GetWidth();
byte* pRealData1;
byte* pRealData2;
pRealData1=(byte*)myImage1.GetBits();
pRealData2=(byte*)myImage2.GetBits();
int pit1=myImage1.GetPitch();
int pit2=myImage2.GetPitch();
int bitCount1=myImage1.GetBPP()/8;
int bitCount2=myImage2.GetBPP()/8;
int tempMyImage1,tempMyImage2,temp;
for (int y=0; y<maxY; y++) {
for (int x=0; x<maxX; x++) {
tempMyImage1=*(pRealData1+pit1*(y)+(x)*bitCount1);
tempMyImage2=*(pRealData2+pit2*(y)+(x)*bitCount2);
temp=tempMyImage1-tempMyImage2;
temp=abs(temp);
*(pRealData2+pit2*(y)+(x)*bitCount2)=temp;
*(pRealData2+pit2*(y)+(x)*bitCount2+1)=temp;
*(pRealData2+pit2*(y)+(x)*bitCount2+2)=temp;
}
}
Invalidate();
}
顶帽变换(Top-Hat变换vc实现)
最新推荐文章于 2024-04-16 13:57:50 发布