Skip to content
Snippets Groups Projects
Commit c62db153 authored by ariotte's avatar ariotte
Browse files

fixed DMM opening and closing by adding a transposition of the element

parent a02efbdc
No related branches found
No related tags found
No related merge requests found
......@@ -159,14 +159,14 @@ Image* DMMOp::erosion(const imagein::Image* image, std::vector<imagein::MorphoMa
Image* DMMOp::opening(const imagein::Image* image, std::vector<imagein::MorphoMat::StructElem::Dir> basicElems) {
// outText(QString("Opening with %1 basic elements").arg(basicElems.size()).toStdString());
Image* tmpImg = erosion(image, basicElems);
Image* resImg = dilatation(tmpImg, basicElems);
Image* resImg = dilatation(tmpImg, transposeElement(basicElems));
delete tmpImg;
return resImg;
}
Image* DMMOp::closing(const imagein::Image* image, std::vector<imagein::MorphoMat::StructElem::Dir> basicElems) {
Image* tmpImg = dilatation(image, basicElems);
Image* resImg = erosion(tmpImg, basicElems);
Image* resImg = erosion(tmpImg, transposeElement(basicElems));
delete tmpImg;
return resImg;
}
......@@ -194,3 +194,36 @@ void DMMOp::dmm(const Image* image, vector<StructElem::Dir> basicElems, vector<u
}
outImage(resImg, qApp->translate("DMM", "DMM error").toStdString());
}
std::vector<imagein::MorphoMat::StructElem::Dir> DMMOp::transposeElement(std::vector<imagein::MorphoMat::StructElem::Dir> basicElems){
std::vector<imagein::MorphoMat::StructElem::Dir> TElem;
for(vector<StructElem::Dir>::iterator dir = basicElems.begin(); dir < basicElems.end(); ++dir) {
switch(*dir) {
case StructElem::Left:
TElem.push_back(StructElem::Right);
break;
case StructElem::TopLeft:
TElem.push_back(StructElem::BottomRight);
break;
case StructElem::Top:
TElem.push_back(StructElem::Bottom);
break;
case StructElem::TopRight:
TElem.push_back(StructElem::BottomLeft);
break;
case StructElem::Right:
TElem.push_back(StructElem::Left);
break;
case StructElem::BottomRight:
TElem.push_back(StructElem::TopLeft);
break;
case StructElem::Bottom:
TElem.push_back(StructElem::Top);
break;
case StructElem::BottomLeft:
TElem.push_back(StructElem::TopRight);
break;
}
}
return TElem;
}
\ No newline at end of file
......@@ -39,6 +39,9 @@ protected:
imagein::Image* opening(const imagein::Image*, std::vector<imagein::MorphoMat::StructElem::Dir>);
imagein::Image* closing(const imagein::Image*, std::vector<imagein::MorphoMat::StructElem::Dir>);
void dmm(const imagein::Image*, std::vector<imagein::MorphoMat::StructElem::Dir>, std::vector<unsigned int>);
private:
std::vector<imagein::MorphoMat::StructElem::Dir> transposeElement(std::vector<imagein::MorphoMat::StructElem::Dir>);
};
#endif // DMMOP_H
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment