首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何恢复VTK中的亮度和对比度?

如何恢复VTK中的亮度和对比度?
EN

Stack Overflow用户
提问于 2013-06-26 07:10:33
回答 1查看 1.3K关注 0票数 1

我正在使用Qt + VTK开发一个C++应用程序。实际上,我有一个QVTKWidget,用于显示DICOM图像。我使用了一个vtkImageViewer2和一个vtkInteractorStyleImage,,所以我可以通过点击鼠标改变图像的亮度和对比度,同时按下左边的按钮。

但是,我希望启用一个按钮,用于恢复亮度和对比度的原始值。我做了一些研究,但在文档中找不到任何关于它的功能,也找不到任何可以在运行时更改的亮度和对比度值。

我希望有人能帮忙。谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-08-27 14:44:35

按照示例,我已经能够将此代码放置在以下位置:

代码语言:javascript
运行
复制
void MainWindow::on_luminosityResetButton_clicked()
{
    vtkSmartPointer<vtkImageShiftScale> shiftScaleFilter = 
    vtkSmartPointer<vtkImageShiftScale>::New();
    shiftScaleFilter->SetOutputScalarTypeToUnsignedChar();
    #if VTK_MAJOR_VERSION <= 5
        shiftScaleFilter->SetInputConnection(imageData->GetProducerPort());
    #else
        shiftScaleFilter->SetInputData(imageData);
    #endif
    shiftScaleFilter->SetShift(0);
    shiftScaleFilter->SetScale(0);
    shiftScaleFilter->Update();

    // Create actors
    vtkSmartPointer<vtkImageSliceMapper> originalSliceMapper = vtkSmartPointer<vtkImageSliceMapper>::New();
    #if VTK_MAJOR_VERSION <= 5
        originalSliceMapper->SetInputConnection(imageData->GetProducerPort());
    #else
        originalSliceMapper->SetInputData(imageData);
    #endif

    vtkSmartPointer<vtkImageSlice> originalSlice = vtkSmartPointer<vtkImageSlice>::New();
    originalSlice->SetMapper(originalSliceMapper);

    vtkSmartPointer<vtkImageSliceMapper> shiftScaleMapper = vtkSmartPointer<vtkImageSliceMapper>::New();
    shiftScaleMapper->SetInputConnection(shiftScaleFilter->GetOutputPort());

    vtkSmartPointer<vtkImageSlice> shiftScaleSlice = vtkSmartPointer<vtkImageSlice>::New();
    shiftScaleSlice->SetMapper(shiftScaleMapper);
    shiftScaleSlice->GetProperty()->SetInterpolationTypeToNearest();

    renderer->AddViewProp(originalSlice);

    vtkSmartPointer<vtkRenderer> shiftScaleRenderer =
        vtkSmartPointer<vtkRenderer>::New();
    shiftScaleRenderer->AddViewProp(shiftScaleSlice);

    ui->qvtkWidget->update();
}

现在它起作用了(亮度和对比度获得了它们的原始值),但是我还没有完全理解它背后的逻辑。所以,我不把自己的答案标记为正确的答案(希望得到一个更贴切的答案),但我还是把它发了出来。我在其他地方也看到了同样的问题(没有得到回答),我希望它能对其他人有用。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17313709

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档